Одна строка C, которая может сломать вам логику В C порядок… — C++ Academy — TG.ME

Одна строка C, которая может сломать вам логику

В C порядок вычисления аргументов функции не определён.


foo(i++, i++);


Из-за этого один и тот же код может дать разный результат:

* gcc: foo(1, 0)
* clang: foo(0, 1)

Причина простая: компиляторы по-разному вычисляют аргументы.

Такие вещи годами становились источником очень неприятных багов.
Хорошая новость: сейчас -Wall обычно умеет это подсветить.

Вывод банальный, но важный: не пишите код, который зависит от порядка вычисления аргументов.
❤16👍6🥰2
August 22, 2026 2.4K 8 29