简单的题目来看一下
main() {
int x=1,y=1,z;
z=1||++x&&y--;
printf("\n%d,%d,%d",x,y,z);
}
输出:1,1,1
为什么x,y的值不变??
按优先级运算的话,应该是先运算&&,那么无论是x 或者是y ,值都应该改变了啊?
----------------解决方案--------------------------------------------------------
z=1||++x&&y--;
先计算 || 运算符左边,左边是1,所以结果为真,|| 右边不再计算
所以 ++x&&y-- 并没有执行
&& 运算符类似
expression1 && expression2
如果 expression1 为假,则expression2不会被判断
----------------解决方案--------------------------------------------------------
#include "stdio.h"
main()
{
int x=1,y=1,z;
z=0||++x&&y--;
printf("\n%d,%d,%d",x,y,z);
}
把他改成这样就变了
因为z=1就不会执行后面了
----------------解决方案--------------------------------------------------------
哦,我又忘记了 = 的优先级别了,谢谢了
----------------解决方案--------------------------------------------------------