我在写一些代码时产生了这个疑问。

int i = true;

是"始终"保证我将具有值1的变量,还是再次取决于我正在使用的编译器?进一步对于某些Win32 API,它接受Bool作为参数,如果我通过Bool变量会发生什么?

答案

Bool是C ++中的基本数据类型。转换true到整数类型将产生1,然后转换false将产生0(4.5/4和4.7/4)。在C中,直到C99之前,都没有Bool Datatepe,人们做了类似的事情

enum bool {
    false, true
};

Windows API也是如此。从C99开始,我们有_Bool作为基本数据类型。包括stdbool.h将要 Typedef #define那是bool并提供常数truefalse。由于与现有代码的兼容性问题,它们并没有使BOOL成为基本数据类型(因此是关键字)。

来自: stackoverflow.com