在`if`条件下将变量赋值为零时会发生什么?

时间:2013-07-09 05:35:12

标签: c

如果有人能够解释这一点会很有帮助。

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 

4 个答案:

答案 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)是变量0a的分配。如果你想比较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。