TGViewer
C++ Academy C++ Academy @cpluspluc · 15.5K subscribers
Post #1525 2.95K
Одна строка C, которая может сломать вам логику

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


foo(i++, i++);


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

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

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

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

Вывод банальный, но важный: не пишите код, который зависит от порядка вычисления аргументов.
  • ❤ 16
  • 👍 8
  • 🥰 3
More from @cpluspluc
  1. Sep 22, 2026Лицо C++-разработчика, когда он написал 6000 строк кода, чтобы обогнать твои 4 строки на P…
  2. Sep 18, 2026Как посчитать миллиарды уникальных значений, используя всего несколько килобайт памяти Для…
  3. Sep 17, 2026⚙️ useful_abstractions - вычисления на этапе компиляции в C++23 Библиотека упрощает работу…
  4. Sep 17, 2026Разница между C++ и Python
  5. Sep 17, 2026«Я про бэкенд»: как устроены AI-системы под капотом бигтеха 🗓 3 октября, Москва и онлайн…
  6. Sep 16, 2026💡 Алгоритм Флойда находит цикл в связном списке всего с двумя указателями и `O(1)` дополн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →