如果我有这样的条件:
if (X && Y) {}
Run Code Online (Sandbox Code Playgroud)
编译器会检查Y是否X为false?它是编译器依赖的吗?
C规范(6.5.13)为您澄清了这一点:
4与按位二进制和运算符不同,&&运算符保证从左到右的评估 ; 如果计算第二个操作数,则在第一个和第二个操作数的计算之间存在一个序列点.如果第一个操作数比较等于0,则不计算第二个操作数.
所以C语言本身定义了如果X == 0那么Y不会被检查.
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |