#include <iostream>
#include <stdio.h>
int main(int argc, char** argv)
{
int a=0,b=0;
a++&&b++;
printf("%d %d",a,b);
return 0;
}
因为a++时,a还是0,要整个表达式结束后a才加1。&&操作符如果左侧为0,右侧就不计算了,所以b还是0。最终结果a=1,b=0
逻辑运算的工作原理是:
表达式A && 表达式B :
如果A的值为假就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值
表达式A || 表达式B :
如果A的值为真就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值
a++ 是先返回判断原本的值0 再对a加1
0为假,非0为真,
所以 a++&&b++; 是就直接返回0, &&后的 b++ 不会执行
由于短路与&&前面是假,后面不会执行,也就只执行了a++