c++ - 防止从 bool 到 char 的隐式转换

标签 c++ char boolean implicit-conversion

我注意到在 C++ 中 bool 被隐式转换为 char。我意识到它们都存储为 1 个字节,但它们是根本不同的类型。是否有一些编译器标志或我可以设置的东西来防止两者之间的隐式转换? char 自动转换为 bool 是有意义的,但反之则不然。

例如,以下内容是有效的:

char test = true;

我正在使用带有 C++17 的 Xcode

最佳答案

此转换是 C++ 标准( integral conversions 的一部分)强制执行的,因此不可能禁用此转换并保持兼容的 C++ 编译器。

编译器有可能提供不合规的扩展,但对于这样的事情,他们可能更喜欢警告而不是不合规。但是,我找不到提供此类警告的编译器(例如, No warning for implicit cast of bool to floating type )。

不过,答案可能以非编译器工具的形式存在。看起来像 clang-tidy包括a check for implicit conversions from bool .

关于c++ - 防止从 bool 到 char 的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63862428/

相关文章:

c++ - OSX 上的 Qt 抗锯齿问题

两个 boolean 列表上的 Python AND 运算符 - 如何?

PHP:在MYSQL数据库中使用 boolean 变量进行逻辑的语法

c++ - 如何将char复制到char数组

c# - 更改 boolean 值的默认值

javascript - C++ std::flush的JavaScript等效项是什么?

c++ - 在 opencv 中获取 cv::VideoCaputre 的正确分辨率?=

python - 如何强制嵌入式 python 使用与命令行一相同的 sys.path?

c++ - 为什么 char 数组类型的类成员在成员函数中突然变成 const char 数组类型?

c - 将 char 转换为整数并返回值的函数 [C]