如下程序:
#include <stdio.h> int main() { int a = 5, b = 6; int num = 5; if(a < num && b-- == 0){} printf("num is %d, a is %d, b is %d./n", num, a, b); a = 3; if(a < num && b-- == 0){} printf("num is %d, a is %d, b is %d./n", num, a, b); }
问,b的值应该是多少。
输出:
num is 5, a is 5, b is 6. num is 5, a is 3, b is 5.
这说明:
语句 if(a < num && b-- == 0) 在执行时是分两个阶段执行的,
即先判断a < num,再判断b-- == 0,
并且,只有在a < num为真时,才判断b-- == 0;
这里是由 && 决定的,即如果第一个条件为假,就不需要判断后面的条件。
同理,如果是下面的语句
if(a < num || b-- == 0)
那么,根据“||”运算符, a < num和 b-- == 0每次都是需要运行的,
因为只有两个都判断之后,才能决定条件的真假。