Это честно; просто приведите свой источник в следующий раз. : -]

, у меня есть этот код:

unsigned int func1();
unsigned int func2();
unsigned int func3();

unsigned int x = func1() | func2() | func3();

Гарантирует ли C ++, что сначала будет вызываться func1 (), затем func2 (), а затем func3 ()?

Или компилятору разрешено вызывать функции в любом порядке?

Кроме того, разрешено ли компилятору реализовывать оптимизацию короткого замыкания здесь, если он этого хочет? (например, если func1 () вернул ~ 0, может ли компилятор не беспокоиться о вызове func2 () или func3 (), потому что он знает, что их возвращаемые значения не могут повлиять на значение, присвоенное x?)

Ответы на вопрос(2)

Ваш ответ на вопрос