if (i < 10 && a[i++] != 0)
如果之前i==5,则该语句执行后,i==6;如果i不小于10,则整个逻辑表达式的结果已知,第二个操作数不再计算,所以该语句执行后,i的值不变。
同样:
if (i >= 10 || a[i++] == 0)
如果之前i==5,则该语句执行后,i==6;如果i不小于10,则整个逻辑表达式的结果已知,第二个操作数不再计算,所以该语句执行后,i的值不变。
类似的情况,还有三元条件表达式? :,其第二操作数和第三操作数只有一个会实际计算。
{{tag>C语言}}