#include<stdio.h> int main() { int a=0,b=1,d=10; if(a) if(b) d=20; else d=30; printf("%d\n",d); }

求解释,为什么
第一个判断为假

int a=0,b=1,d=10;
if(a) if(b) d=20;
else d=30;
printf("%d\n",d);
因为else总是与跟他最近的if配对,所以上述的代码际上等价于下边的代码:
int a=0,b=1,d=10;
if(a)
{
if(b) d=20;
else d=30;
}

printf("%d\n",d);
因为a=0,if(a)为假,所以大括号内的所有赋值语句均未执行。所以d值不变,仍旧是10.

一般判断表达式真假:非零即为真。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-25
都没判断的条件,编译器肯定会直接往下执行,如果你写if(a == 0),那么就会是真的。你的代码写得太不规范了。。。。
第2个回答  2012-09-25
你的a为非0值为真,为0为假追问

可以求(a=0)的返回值吗????

追答

a=0是个赋值操作,它判断真假是根据a的值来的,如果你写成a==0那么这个就有返回值,这个就为真。a=0这个操作是没有返回值的。

本回答被提问者和网友采纳
第3个回答  2012-09-25
因为此时赋值a=0,在第一个if中就判断为假。
第4个回答  2012-09-25
C语言规定一个变量非零即为真,0即为假

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网