Gcc 短路评估是C/C+中的一种语言功能吗+;或编译器实现
我想知道是否有短路评估Gcc 短路评估是C/C+中的一种语言功能吗+;或编译器实现,gcc,visual-c++,g++,Gcc,Visual C++,G++,我想知道是否有短路评估 long param = 0; if ( functAWithSideEffects(¶m) || funcBWithSideEffects(¶m) ) 可以信赖。例如,如果funcAWithSideEffects返回true,编译器求值funcBWithSideEffects吗?短路评估是语言功能还是编译器实现细节?是。这是可以信赖的 保证它(我的重点): 4与按位|运算符不同,| |运算符保证 从左到右评价;如果对第二个操作数求值,则
long param = 0;
if ( functAWithSideEffects(¶m) || funcBWithSideEffects(¶m) )
可以信赖。例如,如果funcAWithSideEffects返回true,编译器求值funcBWithSideEffects吗?短路评估是语言功能还是编译器实现细节?是。这是可以信赖的 保证它(我的重点): 4与按位|运算符不同,| |运算符保证 从左到右评价;如果对第二个操作数求值,则 第一次和第二次评估之间的序列点 操作数如果第一个操作数比较不等于0,则第二个操作数 未计算操作数。 虽然C++从几个方面与C发散,但我确信99.99%的短路评估不是其中之一。
对于
&&
是,可以找到类似的保证。这是可以信赖的
保证它(我的重点):
4与按位|运算符不同,| |运算符保证
从左到右评价;如果对第二个操作数求值,则
第一次和第二次评估之间的序列点
操作数如果第一个操作数比较不等于0,则第二个操作数
未计算操作数。
虽然C++从几个方面与C发散,但我确信99.99%的短路评估不是其中之一。
通过阅读C++11标准,可以为
&&
检查找到类似的保证,实际上我确信它埋在了某个地方!通过阅读C++11标准进行检查,实际上我确信它埋在了某个地方!