&&逻辑与,||逻辑或,逻辑运算符,同优先级。其意义如下:A&&B——只有当A、B都为真时,该表达式值才为真;A||B——只有当A、B都为假时,表达式值才为假。 特别注意(似乎是C进行的优化):对于表达式A||B,当A为真时,将不对B进行判断,因为整个表达时的值已经确定了,为真;而对于表达式A&&B,当A为假时,将不对B进行判断,因为整个表达时的值已经确定了,为假。 看如下语句:x=y=z=-1;++x||++y&&++z;++x,值为0,x值也为0;接下来是||,还要对后面进行判断,++y,值为0,y值也为0;接下来是&&,不再进行判断,整个表达式的值为0,z的值仍为-1。故执行完后,x=0,y=0,z=-1 x=y=z=-1;++x&&++y||++z;++x,值为0,x值也为0;接下来是&&,不对紧跟表达式进行判断,y值仍为-1;接下来是||,要对后面进行判断,++z,z的值为0,整个表达式的值为0。故执行完后,x=0,y=-1,z=0看如下程序:#include <stdio.h>int main(){ int x,y,z; x=y=z=-1; ++x||++y&&++z; printf("x=%d\ty=%d\tz=%d\n",x,y,z); x=y=z=-1; ++x&&++y||++z; printf("x=%d\ty=%d\tz=%d\n",x,y,z); return 0;}其输出结果为:x=0 y=0 z=-1x=0 y=-1 z=0

评论