请阅读以下程序,该程序

#include<stdio.h>
main()
{int x=-10,y=5,z=0;
if(x=y+z) printf("***\n");
else printf("$$$\n");
}
A.有语法错误不能通过编译 B.可以通过编译但不能通过连接 C.输出*** D.输出$$$
请高手仔细分析一下题目,谢谢了!

答案是C,打印三个*号,if(x=y+x)注意这是一个赋值表达式,把y+z的结果赋值给x,所以x等于5,if语句判断是非0都为真,所以打印三个*号,如果题目改成if(x==y+z),又不一样,变成了比较运算表达式,判断x是否等于y+z的结果,+号的运算优先级比==高,所以比较x和y+z的结果是否相等,显然结果不相等,执行else语句
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-30
应该是C吧,运行一下看看的追问

关键是为什么,请具体分析一下。

相似回答