几道C语言问题求教 望高手解答

1.请阅读以下程序,该程序
#include”stdio.h”
main()
{
int x=-10,y=5,z=0;
if(x=y+z)printf(“***\n”);
else printf(“$$$”\n);
}
答案为输出***为什么呢?我觉得应该输出$$$

2.已有定义:int x=3,y=4,z=5;则表达式!(x+y)+z-1&&y+z/2的值是1 为什么呢?

3.定义int x=10,y,z;执行y=z=x;x=y==z;后,x的结果是1 为什么?

1、#include”stdio.h”
main()
{
int x=-10,y=5,z=0;
if(x=y+z)printf(“***\n”);//此处应为x==y+z;混淆了“=”和“==”,“=”是赋值运算符,“==”是等于号,
else printf(“$$$”\n);
}
2、(x+y)+z-1&&y+z/2是逻辑运算,不为0,就为1,
3、由于“==”的优先级高于“=”,x=y==z相当于x=(y==z),而“y==z”为1,所以x=1;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-24
1、if(x=y+z)永远是真,因为他只是个赋值语句,不是判断。
2、因为两个表达式都不为0,所以..
3、y=z=x;之后y=z成立,所以y==z是真,再赋值给x,所以x=1
第2个回答  2009-12-24
1. 意思是如果X=Y+Z 则输出*** 否则输出$$$

你把程序全删了 重新输入一遍试试 我也懵了

2.意思是 与逻辑 这里牵扯到一个优先级的问题 算术优先符是优先于逻辑运算符的。
所以这个题应该先计算 (X+Y)+Z-1 = ...........

.................同学注意一下 你的题是不是写错了 我怎么看来看去你这三个题应该都是题错了 麻烦你把题再重新上传一下我看看
第3个回答  2009-12-24
1, 语句 x=y+z 执行后 x 值就是 y+z ,也即 5 , 那么条件就为真,你是不是要写为 x == y+z ?
2, 算术运算的优先级高于逻辑运算 , 故先计算出 && 两边 表达式的结果在进行 与运算 , 故为 1
3, 执行 y=z=x; 后 y=z , 故 y==z 为真 , 故 x=1
第4个回答  2009-12-24
x=y+z里面的“=”是赋值符号,要写两个“==”号才是等于
相似回答
大家正在搜