明天考2级,求助C语言题目一道。

[复制链接]
查看11 | 回复3 | 2010-9-17 19:03:24 | 显示全部楼层 |阅读模式
#include
main()
{int x=3,y=0,z=0;
if(x=y+z)printf("A");
else printf("B");
}
书上答案是A,意思就是x=y+z是赋值语句,恒成立;
可是我第一次做的答案是B,就是x=0,用WIN-TC运行结果也是B;
求真相

回复

使用道具 举报

千问 | 2010-9-17 19:03:24 | 显示全部楼层
#includemain(){
int x=3,y=0,z=0;
if (x=y+z)
//正确结果应该是输出B,x被从新赋值为0,
printf("A");//这破书早该丢了,误人子弟啊
else
printf("B");}
回复

使用道具 举报

千问 | 2010-9-17 19:03:24 | 显示全部楼层
答案是 B if语句里面的条件是 x其实可以写成两句:x = y +z;if(x) .....x 已经被赋值为零if语句中 非0 是true, 0 就是false 了所以会输出 B
回复

使用道具 举报

千问 | 2010-9-17 19:03:24 | 显示全部楼层
答案应该是A。。书上没有错。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行