【问题标题】:Why does int vs bool typecheck fail [duplicate]为什么int vs bool类型检查失败[重复]
【发布时间】:2016-07-08 22:20:08
【问题描述】:

我最近错误地将 int 声明为 bool,并且 g++ 编译器没有出现类型错误。然后我再次尝试进行测试,它编译得很好。有人可以解释为什么这是可以接受的行为吗?至少当我尝试 ++ 一个布尔值或当我将 bool 分配为 integer 时,编译器不应该给我一个警告吗?

int main(int argc, char** argv)
{
    bool x = 0;
    x++;
    x++;
    cout << x << "\n";
    return 0;
}

【问题讨论】:

  • bool 在 C++ 中内部实现为 int,唯一允许的值是 10
  • @HappyCoder 这听起来不对。你可能会想到 C。
  • 哦,是的。那将是 C。在 C++ 的情况下,实现因编译器而异

标签: c++


【解决方案1】:
  • 对于旧标准 (C++98),这不是错误。
  • 随着新标准的增加,布尔值已被弃用。 (C++11)
  • 在 C++17 之前,您可以对布尔值使用增量。

【讨论】:

    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 2021-07-29
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2019-11-08
    相关资源
    最近更新 更多