gpt4 book ai didi

c++ - 在 c/c++ 中添加两个 bool 值

转载 作者:可可西里 更新时间:2023-11-01 15:40:11 24 4
gpt4 key购买 nike

我试着把 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'?

最佳答案

导致转换的不是溢出,而是你做算术的事实。在 C++(以及行为起源的 C)中,内置类型的基本算术运算符的操作数在进行计算之前经过一组定义明确的提升。这些规则中最基本的(有些简化)是任何小于 int 的类型都会被提升为 int

你的后续问题有相同的答案 - 你的 shortint 小,所以它在添加之前被提升为 int发生。

This StackOverflow question有几个答案更详细地描述了促销事件。

关于c++ - 在 c/c++ 中添加两个 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17179287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com