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

Ani*_*Ani 3 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;
}
Run Code Online (Sandbox Code Playgroud)

输出是

a is not zero   Value of a is 0 
Run Code Online (Sandbox Code Playgroud)

tro*_*foe 34

赋值的结果是表达式的值.

因此:

if (a = 0)
Run Code Online (Sandbox Code Playgroud)

是相同的:

if (0)
Run Code Online (Sandbox Code Playgroud)

这与:

if (false)
Run Code Online (Sandbox Code Playgroud)

这将迫使else路径.


Jim*_*ter 7

if(a=0)
       printf("a is zero\t");
 else
       printf("a is not zero\t");
Run Code Online (Sandbox Code Playgroud)

这些消息正是倒退的.后声明if如果条件执行为0,如果条件执行否则会后声明 0,所以这应该是

if(a=0)
       printf("a is not zero\t");
 else
       printf("a is zero\t");
Run Code Online (Sandbox Code Playgroud)

或者,等效但更清楚,

a = 0;
if(a)
       printf("a is not zero\t");
 else
       printf("a is zero\t");
Run Code Online (Sandbox Code Playgroud)

哪个,再加上

printf("Value of a is %d\n",a);
Run Code Online (Sandbox Code Playgroud)

会打印

a is zero   Value of a is 0 
Run Code Online (Sandbox Code Playgroud)

正如所料.