执行程序段int a=-1,b=4,k;k=(++a<0)&&!(b--<=0);printf("%d ,%d ,%d\n",k,a,b);后的输出结果是()
A .1 0 4 B.1 0 3 C.0 0 3 D.0 0 4
为什么b不是3?b--执行过后不是会自动减一吗?
&& 左边的 (++a<0)逻辑为假,右边的不执行了,短路了
&&是极简运算符,如果左边条件为假,则不判断右边,也就是不会执行b--,同样,对于‖来说,如果左边为真,也不判断右边。你可以参考java中的运算符来记忆