【发布时间】:2013-06-18 21:27:55
【问题描述】:
我尝试将 bool 值加在一起,比如:
bool i = 0, j = 0, k = 0;cout << sizeof(i + j + k) << endl;
结果为 4,表示将结果转换为 'int' 值。
我想问:这是C/C++标准操作吗?如果临时值溢出,编译器是否总是保证将其转换为更大的类型?谢谢!
感谢您的回答,一个后续问题:
说,如果我这样做:
unsigned short i = 65535, j = 65535;
cout << sizeof(i + j) << endl;
结果是4。为什么它被提升为'int'?
【问题讨论】:
-
int 不是比 bool 更大的类型
-
编译器是否总是保证临时值溢出时转换为更大的类型?不,在请求强制转换之前,它永远不会将值转换为更大的类型。
-
@aaronman:在大多数实现中,
sizeof(bool) < sizeof(int)被许多人称为int是比bool更大的类型[更多位]。 -
@DavidRodríguez-dribeas,我想你的意思是
<。 -
@CarlNorum: 哈哈...是的,我的意思是
<(我已经在评论中更正了原来的>)
标签: c++