我在编写一些代码时遇到了这个疑问。 'bool' 是 C++ 标准中定义的基本数据类型,还是编译器提供的某种扩展?我有这个疑问是因为 Win32 有 'BOOL' 这不过是 long 的 typedef。如果我这样做会发生什么:
int i = true;
“总是”保证变量 i 的值为 1 还是再次取决于我使用的编译器?此外,对于一些接受 BOOL 作为参数的 Win32 API,如果我传递 bool 变量会发生什么?
最佳答案
bool 是 C++ 中的基本数据类型。将 true
转换为整数类型将产生 1,而将 false
转换将产生 0(4.5/4 和 4.7/4)。在 C 中,直到 C99,没有 bool 数据类型,人们做了类似的事情
enum bool {
false, true
};
Windows API 也是如此。从 C99 开始,我们将 _Bool
作为基本数据类型。包含 stdbool.h
将 typedef #define
即 bool
并提供常量 true
和 false
。由于与现有代码的兼容性问题,他们没有使 bool 成为基本数据类型(因此也成为关键字)。
关于c++ - 'bool' 是 C++ 中的基本数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/356726/