当一个变量在“if”条件下被赋值为零时会发生什么



如果有人能解释这一点,那将很有帮助。

int main()
{
 int a=0;
 if(a=0)
       printf("a is zerot");
 else
       printf("a is not zerot");
 printf("Value of a is %dn",a);
 return 0;
}

这个的输出是

a is not zero   Value of a is 0 

赋值的结果是表达式的值

因此:

if (a = 0)

与相同

if (0)

与相同

if (false)

这将强制CCD_ 1路径。

if(a=0)
       printf("a is zerot");
 else
       printf("a is not zerot");

这些信息完全是反向的。如果条件不是0,则执行if之后的语句;如果条件,则执行else之后的语句,因此这应该是

if(a=0)
       printf("a is not zerot");
 else
       printf("a is zerot");

或者,等同但更明确地说,

a = 0;
if(a)
       printf("a is not zerot");
 else
       printf("a is zerot");

与一起

printf("Value of a is %dn",a);

将打印

a is zero   Value of a is 0 

正如预期的那样。

If()函数接受true或false值作为参数。

所以,无论你放在括号里什么,对if()函数都没有意义,而是它的值。

在任何情况下,"0"都被视为假值,因此当您将0作为参数传递时,如:

if(0)
{
  ---statments---
}

的语句部分将不会被执行,系统将直接跳转到其他部分。

在您提到的情况下,您将0分配给变量,并将其作为参数传递给if()。请注意,if()只接受0或非0值。所以,你做什么任务并不重要。if()将接收变量"a"的值作为参数,并相应地执行操作。

在这种情况下,由于a的值为0,if部分将不会执行,系统将跳转到else。

if(a=0)是变量a0的赋值。如果你想比较a和零,你需要写如下if(a==0)

你的条件是一个简单的赋值,它使a为零,所以条件为假,你从else部分得到打印。

最新更新