Cha*_*son 0 c++ comparison types
重新确定没有BOOL数据类型的东西,请采取以下措施:
std::cout << (1>2); //<<-- prints 0
假设这个错误的比较为0,那么比较结果的数据类型会减少到什么?快速谷歌搜索不会产生任何结果.我最好猜测它是unsigned char因为它是0中最真实的最基本数据类型0x00.我不想假设任何东西,因为我不确定伏std::cout都教对价值的影响使它成为一个可打印的角色.
Jos*_*eld 10
所有关系运算符(的结果的类型<,>,<=,>=)是bool:
所有运算符
<(小于),>(大于),<=(小于或等于)和>=(大于或等于)所有运算符false或true.结果的类型是bool.
类型的对象bool具有的值true或false.Under积分推广,一个bool可被转换为int在那里false变成0和true变成1:
类型的prvalue
bool可以转换为类型的prvalueint,false变为零并true成为一个.
bool是一个整数类型,标准所说的是用"纯二进制计算系统"表示的.描述此表示的脚注是它是如何映射到的值相当不明确true和false,但你可以认为他们是暗示该值表示的0是所有0位:
使用二进制数字0和1的整数的位置表示,其中由连续位表示的值是加性的,以1开始,并且乘以2的连续积分幂,除了可能对于具有最高位置的位.(改编自美国国家信息处理系统词典.)
没有标准BOOL类型,但bool它是标准的基本类型:
[C++11: 3.9.1/6]:类型的值bool是true或false.[..]
至于你的关系比较的结果:
[C++11: 5.9/1]:关系运算符组从左到右.[..]操作数应具有算术,枚举或指针类型或类型std::nullptr_t.所有运算符<(小于),>(大于),<=(小于或等于)和>=(大于或等于)所有运算符false或true.结果的类型是bool.
请注意,这在C中是不同的,其中没有内置类型,bool并且关系比较的结果是类型int:
[C99: 6.5/8]:如果指定的关系为真且如果为假,则每个运算符<(小于),>(大于),<=(小于或等于)和>=(大于或等于)将产生.结果有类型.10int