4.执行下列语句后a的值为( ),b的值为( C ). int a, b, c; a=b=c=1; ++a|| ++b &&
1
2
3
4
5
6
7
8
9
10
// 定义3个变量a、b、c
inta, b, c;
// 给3个变量赋初值,a=1 b=1 c=1
a=b=c=1;
// 逻辑与的优先级高于逻辑或,相当于++a || (++b && ++c)
// 所以先判断++a是否为真,++a,前置自增后a为2,为真
// 而此时,由于是逻辑或运算,只要有一个为真,结果就为真,已经可以判定这个表达式的值为真
// 所以,后面括号中的表达式就不会运算,b为1,c为1
// 这个行为通常称为“短路求值”
++a || ++b && ++c;