注册 登录
编程论坛 C语言论坛

初学 条件判断 赋值

gadx2958 发布于 2020-04-15 14:40, 1248 次点击
以下为某一程序片段
main()
{int x=1,y=1,z=0;
if(z=y<0)x=3;
else if(y==0)x=5;
else x=7;
printf("%d\t",x);
printf("%d\t",z);
}

if(z=y<0) 请问这个判断语句怎么看
先判断y<0  不成立就直接else   成立的话是将y赋值给z吗
如果是,赋值过去后怎么继续判断语句正误得出x的值
如果不是,是不是结果就是x=3
那么可不可以不考虑优先级而直接把y赋值给z然后判断(z<0)
2 回复
#2
纯蓝之刃2020-04-15 15:34
if(z=y<0)

<的优先级大于=,所以先判断y<0,如果为真,返回1,如果为假,返回0.因为y=1,所以y<0为假,返回0,则z=0.if(0)为假。
所以结果x=7,z=0.
#3
forever742020-04-15 16:10
给z赋值的不是y,而是表达式y<0,
接下来见二楼。
1