如果有人可以解释这一点,那将很有帮助。
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
如果有人可以解释这一点,那将很有帮助。
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
赋值的结果是表达式的值。
所以:
if (a = 0)
是相同的:
if (0)
这与以下内容相同:
if (false)
这将强制else
路径。
if(a=0)
printf("a is zero\t");
else
printf("a is not zero\t");
这些信息恰恰是倒退的。if
如果条件不为0,则执行else之后的语句,如果条件为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
正如预期的那样。
if () 函数接受真或假值作为参数。
因此,无论您放在括号内的任何内容对 if() 函数都没有意义,但事实上它具有什么价值。
'0' 在任何情况下都被视为错误值,因此当您将 0 作为参数传递时,例如:
if(0)
{
---statments---
}
的语句部分不会被执行,系统会直接跳转到else部分。
在您提到的情况下,您将 0 分配给变量并将其作为参数传递给 if()。注意 if() 只接受 0 或非 0 值。所以,你做了什么任务并不重要。if() 将接收变量 'a' 的值作为参数并采取相应的行动。
在这种情况下,由于a的值为0,if部分不会被执行,系统会跳转到else。
if(a=0)
是0
变量中的赋值a
。如果你想a
与零进行比较,你需要像下面这样写
if(a==0)
您的条件是简单的分配,它a
为零,因此条件变得错误并且您正在从else
零件中获取打印件。