我们可以在 if 语句中赋值吗?

标签 c if-statement variable-assignment

#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/

相关文章:

ruby - 了解 ruby​​ 中的 proc

在c中将十六进制数转换为八进制

c - sprintf(newpath, "%s%s",...) 的 sprintf_s 模拟是什么?

c - C中如何为链表的头部分配空间?

c - 如何在C中解决 "control may reach end of non-void function"?

javascript - 在javascript中赋值而不是引用

c++ - C 风格字符串、指针、数组

file - 批处理文件第三个 "If NOT"语句未到达

Python:多个 if 条件取决于参数

如果右手边包含字符串文字的串联,则 C++ const std::string 赋值错误