u=x++&& y++||z++
首先这个表达式从左到右计算。&&的优先级是高于||故先运算x++&& y++运算结果是一 && 和|| 又称为简洁与和简洁或,简洁与的意思,如x++&&y++,如果x++被判断为假,则不再对y++进行判断,以为即使y++为真整个x++&&y++也是假。简洁或的意思是x++||y++,如果判断x++为真,则不再对y++进行真假判断,即使y++为假,x++||y++,也还是为真。故对于表达式u=x++&& y++||z++来说x++&&y++为真了,不再对z++进行判断,即z++没有被执行。最后结果是x=2,y=2,z=1,u=1。
printf("%d %d %d %d",x,y,z,x++&& y++||z++);对于这个的输出结果,楼主应该思考一下。
对于int x=10,y=7,z=5,u=0;
u=x<y==x/y!=z>y-3;
首先要搞清楚,运算符的优先级这里+,-,的优先级大于>,>=,<,<=的优先级大于==和!=的优先级的。所以u=x<y==x/y!=z>y-3;的运算次序是u=10<7==10/7!=5>7-3
u=0==1!=1
u=0!=1(相同优先级满足从左往右的计算次序)
u=1;
温馨提示:答案为网友推荐,仅供参考