c++ - 'bool' 是 C++ 中的基本数据类型吗?

标签 c++

我在编写一些代码时遇到了这个疑问。 '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.htypedef #definebool 并提供常量 truefalse。由于与现有代码的兼容性问题,他们没有使 bool 成为基本数据类型(因此也成为关键字)。

关于c++ - 'bool' 是 C++ 中的基本数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/356726/

相关文章:

c++ - 使用 libpng 将位图缓冲区快速编码为 png

c++ - 使用删除器初始化 std::unique_ptr

c++ - 通过代码确定控制台是否应保存到文件(以及该文件的名称)

java - 从WordCount hadoop示例中调用HelloWorld JNI函数,给出错误java.lang.UnsatisfiedLinkError

php - 调用 PHP 解释器并给它 POST 数据

c++ - 访问/填充来自不同类的 vector ?

c++ - OpenGL 数组切换不起作用

c++ - 在 c++ 中的 vector 中使用 vector 时访问元素的异常程序终止错误

c++ - 电容传感器问题

c++ - 为什么我的 GetProcessID 函数没有在 VS 中编译?