如果有人能够解释这一点会很有帮助.
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路径.
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)
正如所料.