还有就是int p,a=5又是什么意思?
原程序:
void main ()
{int p,a=5;
if (p=a!=0)
printf(" %d\n",p) ;
else printf(" %d\n",p+2);
}
int p,a=5
定义两个有符号的整型变量 p,a,并且对a赋值5
if(p=a!=0)
分两步 从右到左
1、a!=0 是判断a是否等于0
若等于 返回 0
若等于 返回 1
结果是不等于 返回了 1
2、p= 返回值 也就是 p=1
3、这时候,再判断 if(p) 判断结果为真,所以输出p的值 ,为1
0分数。。。。。。晕不晕呀,不厚道~
定义两个有符号的整型变量 p,a,并且对a赋值5
if(p=a!=0)
分两步 从右到左
1、a!=0 是判断a是否等于0
若等于 返回 0
若等于 返回 1
结果是不等于 返回了 1
2、p= 返回值 也就是 p=1
3、这时候,再判断 if(p) 判断结果为真,所以输出p的值 ,为1
0分数。。。。。。晕不晕呀,不厚道~
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-04-19
这个 你要了解 运算符的 优先级问题
请看 运算符优先级 列表
!=的优先级 明显高于 赋值运算符
所以p=a!=0的计算顺序是 p=(a!=0)(可以这么理解)
a的值是5,所以a!=0必然是 真 所以 p被赋值1
而if的判断条件 变成 if(p=1)即 if(p),即if(1)
所以 会执行printf(" %d\n",p) ;
所以输出 1
请看 运算符优先级 列表
!=的优先级 明显高于 赋值运算符
所以p=a!=0的计算顺序是 p=(a!=0)(可以这么理解)
a的值是5,所以a!=0必然是 真 所以 p被赋值1
而if的判断条件 变成 if(p=1)即 if(p),即if(1)
所以 会执行printf(" %d\n",p) ;
所以输出 1
第2个回答 2010-04-18
(p=a)!=0就是将a的值付给p,判断p不等于0,等价于 a!=0,当然不等啊,a等于5啊
第3个回答 2010-04-18
int p 为定义变量p
a=5 定义变量a,并赋值a等于5
if(p=a!=0) a!=0赋值于p
因为a!=0为真,所以赋p值为1
a=5 定义变量a,并赋值a等于5
if(p=a!=0) a!=0赋值于p
因为a!=0为真,所以赋p值为1
第4个回答 2013-06-26
正确答案是1.p赋值是对所以是1