#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
语句?
最佳答案
是的,允许在 if
语句中赋值。这非常方便,尤其是当您想要调用该函数并检查它是否返回错误时:
int rc;
if ((rc = check())) {
// here rc is non-zero, often an indication of a failure
}
请注意我是如何在我的赋值周围加上一对额外的括号的——因为它是一个无处不在的混淆源,编译器通常会警告 if
block 中的赋值,假设你可能有打错了额外的一对括号让编译器清楚地知道这就是我的意图。
顺便说一句,这里没有特殊的异常(exception),这种语法的有效性源于一般的 C 语法——赋值运算符计算赋值。
关于我们可以在 if 语句中赋值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947344/