当前位置: 代码迷 >> C语言 >> 简单的题目来看一下
  详细解决方案

简单的题目来看一下

热度:76   发布时间:2007-04-17 13:28:36.0
简单的题目来看一下
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就不会执行后面了

----------------解决方案--------------------------------------------------------

哦,我又忘记了 = 的优先级别了,谢谢了


----------------解决方案--------------------------------------------------------
  相关解决方案