#include
void main()
{
int a=10,b=11,c=12,s;
s=a++<=10&&b--<=2&&c++;
//&&从左往右判断表达式真假,遇到假的后面就不用判断
a++表示执行表达式后再加
首先执行表达式a++<=10。a为10,为真,则继续判断,(此时执行a++,所以a为11)
判断b--<=2,b为11,为假,(此时执行b--,所以b为10) 所以整个判断为假,也就是0
(真的值为1,假就是0)
所以s的值为0.
而因为判断第二个为假,所以第三个表达式没有执行,所以c还是12
printf("%d,%d,%d,%d",s,a,b,c);
getch();
}
因为b--<=2显然不成立所以为0,&&运算先看左边如果左边为0那么无论右边为什么整个都为0,所以当判断左边为0后就不再运行后面的了 。
&&操做的特性,当左边判断为false时,将不再操作右边的部分,||操作亦然。
a++<=10&&b--<=2已经为false了, C++根本没有操作。So
b--<=2是false
不执行c++