Gcc 短路评估是C/C+中的一种语言功能吗+;或编译器实现

Gcc 短路评估是C/C+中的一种语言功能吗+;或编译器实现,gcc,visual-c++,g++,Gcc,Visual C++,G++,我想知道是否有短路评估 long param = 0; if ( functAWithSideEffects(&param) || funcBWithSideEffects(&param) ) 可以信赖。例如,如果funcAWithSideEffects返回true,编译器求值funcBWithSideEffects吗?短路评估是语言功能还是编译器实现细节?是。这是可以信赖的 保证它(我的重点): 4与按位|运算符不同,| |运算符保证 从左到右评价;如果对第二个操作数求值,则

我想知道是否有短路评估

long param = 0;
if ( functAWithSideEffects(&param) || funcBWithSideEffects(&param) )

可以信赖。例如,如果funcAWithSideEffects返回true,编译器求值funcBWithSideEffects吗?短路评估是语言功能还是编译器实现细节?

是。这是可以信赖的

保证它(我的重点):

4与按位|运算符不同,| |运算符保证 从左到右评价;如果对第二个操作数求值,则 第一次和第二次评估之间的序列点 操作数如果第一个操作数比较不等于0,则第二个操作数 未计算操作数。

虽然C++从几个方面与C发散,但我确信99.99%的短路评估不是其中之一。
对于
&&
是,可以找到类似的保证。这是可以信赖的

保证它(我的重点):

4与按位|运算符不同,| |运算符保证 从左到右评价;如果对第二个操作数求值,则 第一次和第二次评估之间的序列点 操作数如果第一个操作数比较不等于0,则第二个操作数 未计算操作数。

虽然C++从几个方面与C发散,但我确信99.99%的短路评估不是其中之一。
通过阅读C++11标准,可以为
&&

检查找到类似的保证,实际上我确信它埋在了某个地方!通过阅读C++11标准进行检查,实际上我确信它埋在了某个地方!