猿问

关于C++ 中的bool 和 BOOL,他们有什么区别呢!

为了以后人能搜索到.!`
BOOL其实是一个 int类型`

bool 才是false 和 true

SMILET
浏览 397回答 2
2回答

潇湘沐

这是两个风马牛不相及的变量类型关键字,只是因为拼法相同,仅区别于大小写,题目才把它们拼凑在了一起。它们区别大了:类型不同:bool是C++定义的布尔类型,BOOL是微软定义的int类型(就是int的别名);取值不同:bool的取值只有0(false)、1(true)两个,而BOOL的取值是int范围;长度不同:bool是单字节(8位二进制)类型,BOOL与int长度相同。下面就2作进一步说明:有一种说法认为bool是两值类型——这没错,它的取值只有0和1,而BOOL是三值逻辑(取FALSE(0)、TRUE(>0)和ERROR(-1))——这错误的,它的取值与int完全吻合,因为它是用typedef int BOOL;定义的int的别名。下面的代码能验证以上表述://#include&nbsp;"stdafx.h"//If&nbsp;the&nbsp;vc++6.0,&nbsp;with&nbsp;this&nbsp;line.#include&nbsp;<iostream>#include&nbsp;"windows.h"using&nbsp;namespace&nbsp;std;int&nbsp;main(void){&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;x=(bool)8;//必须强制,因类型不匹配&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;y=47819,z=-78;//无需强制,它就是int&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"bool:&nbsp;x&nbsp;=&nbsp;"&nbsp;<<&nbsp;x&nbsp;<<&nbsp;endl;//输出是1而非8,因bool型只取0和1&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"BOOL:&nbsp;y&nbsp;=&nbsp;"&nbsp;<<&nbsp;y&nbsp;<<&nbsp;"&nbsp;&nbsp;z&nbsp;=&nbsp;"&nbsp;<<&nbsp;z&nbsp;<<&nbsp;endl;//赋什么值就输出什么&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}BOOL类型常常用作windows的API函数的返回值,这些函数大都返回TRUE(>0)/FALSE(0)/ERROR(-1),但这不是BOOL类型就是三值逻辑的理由,就像strcmp函数返回int类型的-1、0和1三个值,总不能说int是三值逻辑吧!windows的API使用BOOL完全是体现一种代码风格和拉高阅读性能。

白衣非少年

c++ 定义 bool ,其值 为 false 或 true。实际上也是整型。windows.h 定义 了 BOOL 型变量类型。其值 为 TRUE, FALSE. 实际上也是整型实质上一样,一套是小写,另一套是大写。取值 0 为假,非0 (1,2,3,4, -1,-2,。。。)都为 真。---------------------------------------C 程序:#define __BOOL_DEFINED#include <stdio.h>#include <windows.h>bool 和 BOOL 就全都支持了
随时随地看视频慕课网APP
我要回答