如果有人能够解释这一点会很有帮助。
int main()
{
int a=0;
if(a=0)
printf("a is zero\t");
else
printf("a is not zero\t");
printf("Value of a is %d\n",a);
return 0;
}
输出
a is not zero Value of a is 0
答案 0 :(得分:29)
分配的结果是表达式的值。
因此:
if (a = 0)
与:
相同if (0)
与:
相同if (false)
将强制else
路径。
答案 1 :(得分:7)
if(a=0)
printf("a is zero\t");
else
printf("a is not zero\t");
这些消息正是倒退的。如果条件不是 0,则执行if
之后的语句,如果条件 0则执行else之后的语句,所以这应该是
if(a=0)
printf("a is not zero\t");
else
printf("a is zero\t");
或者,等效但更清楚,
a = 0;
if(a)
printf("a is not zero\t");
else
printf("a is zero\t");
其中,与
一起printf("Value of a is %d\n",a);
会打印
a is zero Value of a is 0
正如所料。
答案 2 :(得分:0)
if(a=0)
是变量0
中a
的分配。如果你想比较a
与零,你需要写如下
if(a==0)
你的条件是简单的赋值,它使a
为零,因此条件变为false并且你从else
部分获得打印。
答案 3 :(得分:0)
If()函数接受true或false值作为参数。
因此,无论你放在括号内,对if()函数都没有意义,但对于它具有什么价值这一事实并不重要。
在任何情况下,'0'都被视为假值,因此当您将0作为参数传递时,如:
if(0)
{
---statments---
}
语句部分不会被执行,系统将直接跳转到else部分。
如果你提到你为变量赋值0并将其作为参数传递给if()。 请注意,if()仅接受0或非0值。所以,你做出的任务并不重要。 if()将接收变量'a'的值作为参数并相应地采取行动。
在这种情况下,由于a的值为0,if部分将不会执行,系统将跳转到else。