Скажите, у меня есть этот код:
unsigned int func1();
unsigned int func2();
unsigned int func3();
unsigned int x = func1() | func2() | func3();
Гарантирует ли C ++, что сначала будет вызываться func1 (), затем func2 (), а затем func3 ()?
Или компилятору разрешено вызывать функции в любом порядке?
Кроме того, разрешено ли компилятору реализовывать оптимизацию короткого замыкания здесь, если он этого хочет? (например, если func1 () вернул ~ 0, может ли компилятор не беспокоиться о вызове func2 () или func3 (), потому что он знает, что их возвращаемые значения не могут повлиять на значение, присвоенное x?)