Zig заставит ставить скобки там, где приоритет операторов неоднозначен

Partial Operator Precedence

Спустя десять лет после открытия issue #114 в Zig наконец реализовали требование скобок для неоднозначных сочетаний операторов: компилятор теперь выдаёт ошибку вместо того, чтобы молча применять запутанные правила приоритета. Обычные выражения вроде x + y * z остаются без скобок, а в самом Zig понадобилось поправить лишь 353 строки из миллиона. Для миграции есть zig fmt --upgrade.

Какой бы опыт ни был у вас в Zig, вряд ли вы сможете объяснить порядок вычисления выражения a & b + c * d >> e | f orelse g() catch h + i == j or k and l, не заглянув в правила приоритета.

Ещё за этот день

2026-11-05