如果有人能解释这一点,那将很有帮助。
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()函数都没有意义,而是它的值。
在任何情况下,"0"都被视为假值,因此当您将0作为参数传递时,如:
if(0)
{
---statments---
}
的语句部分将不会被执行,系统将直接跳转到其他部分。
在您提到的情况下,您将0分配给变量,并将其作为参数传递给if()。请注意,if()只接受0或非0值。所以,你做什么任务并不重要。if()将接收变量"a"的值作为参数,并相应地执行操作。
在这种情况下,由于a的值为0,if部分将不会执行,系统将跳转到else。
if(a=0)
是变量a
中0
的赋值。如果你想比较a
和零,你需要写如下if(a==0)
你的条件是一个简单的赋值,它使a
为零,所以条件为假,你从else
部分得到打印。