【发布时间】:2019-07-23 15:31:02
【问题描述】:
#include <stdio.h>
void main()
{
int x = 0;
if (x = 0)
printf("It's zero\n");
else
printf("It's not zero\n");
}
为什么声明 if (x = 0) 不是错误?我们可以在if 语句中分配这样的值吗?为什么它没有产生错误,为什么else 语句被执行?
【问题讨论】:
-
你应该从你的编译器中得到一个警告,如果你没有,调高警告级别。
-
是允许的,但是应该添加一组额外的括号来表明你真的想测试分配的结果。
-
是的,可以在条件中赋值,在需要的时候非常有用,对于新手C程序员来说是个永远的陷阱。比较赋值结果
0,看是否不等于0;它等于 0,所以if为假,else被执行。基本的 C 陷阱。并且该语句等效于:if ((x = 0) != 0)— 额外的括号向编译器说明您想要它。使用恒定的零,这是不明智的。使用可能为零的变量,这是有道理的,我更喜欢显式!= 0作为表达式的一部分。if ((x = 0))看起来很傻! -
面向表达式的编程语言允许更简洁的代码。他们不会强迫你separate commands from queries。
标签: c if-statement variable-assignment