确认没有BOOL
数据类型这样的东西,请执行以下操作:
std::cout << (1>2); //<<-- prints 0
假设这个错误的比较是0,那么比较的结果是什么数据类型呢?在谷歌上快速搜索不会得到任何结果。我最好的猜测是它是一个unsigned char
,因为它是最小的、最基本的数据类型,其中0真正表示为0x00
。我不想做任何假设,因为我不确定伏都教std::cout
对值做了什么才能使它成为可打印的字符。
发布于 2013-01-17 21:59:08
所有关系运算符(<
、>
、<=
、>=
)的结果类型均为bool
对于运算符<
(小于)、>
(大于)、<=
(小于或等于)和>=
(大于或等于),都会生成false
或true
。结果的类型是bool
。
bool
类型的对象的值为true
或false
.Under integral promotion,可以将bool
转换为int
,其中false
变为0
,true
变为1
bool
类型的prvalue可以转换为int
类型的prvalue,其中false
变为0,true
变为1。
bool
是一个整数类型,标准说它是通过使用“纯二进制计数系统”来表示的。描述这种表示的脚注并不清楚它如何映射到值true
和false
,但您可以假设它们是在暗示0
的值表示将全部是0
位:
整数的位置表示法,它使用二进制位0和1,其中由连续位表示的值是相加的,从1开始,然后乘以2的连续整数幂,可能位置最高的位除外。(改编自美国国家信息处理系统词典。)
发布于 2013-01-17 21:58:58
没有标准的BOOL
类型,但bool
是一个标准的基础类型:
类型为bool
的
[C++11: 3.9.1/6]:
值为true
或false
。。。
至于您的关系比较的结果:
[C++11: 5.9/1]:
关系运算符组从左到右。。。操作数应为算术、枚举或指针类型,或类型为std::nullptr_t
。运算符<
(小于)、>
(大于)、<=
(小于或等于)和>=
(大于或等于)都会生成false
或true
。结果的类型为bool
**.**
注意,这在C中是不同的,在C中没有内置类型bool
,并且关系比较的结果是int
类型
[C99: 6.5/8]:
如果指定的关系为真,则<
(小于)、>
(大于)、<=
(小于或等于)和>=
(大于等于)运算符中的每个运算符都将生成1
,如果关系为假,则将生成0
。结果的类型为int
**.**
发布于 2013-01-17 21:59:38
C++标准,第5.9节关系运算符,第1段说:
结果类型为
bool
。
https://stackoverflow.com/questions/14388855
复制