你能在 c++ 中将不同的数字类型加在一起吗?
Can you add different number types together in c++?
我对 c++ 很陌生,我想知道您是否可以将不同的数字类型添加在一起,如下所示:
int num1=1;
float num2=1.0;
double num3=1.0;
你能把这些变量加在一起吗?如果可以,什么类型会
num1+num2+num3
是?
如前所述,答案将是double
.
编译器将为此(不优化(做什么是
- 将文字 1 读入 num1
- 将文字 1.0f 读入 num2
- 阅读文字 1.0 信息 num3
- 将整数 num1 转换为浮点数字 num1'
- 添加 num1' 和 num2,结果是浮点 tmp
- 将浮点 tmp 转换为双 tmp'
- 添加 tmp' 和 num3 以获得最终的双精度结果
您需要小心这些转换。虽然您可以将float
(和int
(转换为double
而不会损失任何精度,但您不能总是对int
float
执行相同的操作。
float
具有 24 位精度,这意味着它可以精确地表示高达 1680 万的所有整数,而signed int
可以达到大约 20 亿。详情请看这里。
[我假设是LP64型号]
答案是双重的。 如果你想测试它,你可以尝试auto ret = num1+num2+num3
安斯看到ret
的类型。
是的,当然...结果将给出浮点数 1+1.0+1.0=3.0 自双
相关文章:
- 你能在 c++ 中将不同的数字类型加在一起吗?
- 检测<T>某些非数字类型 T 的 std::numeric::type 的特化
- 为什么数字类型只有"to_string()"?
- 从 std::stringstream 读取uint8_t为数字类型
- 枚举超过了最大数字类型的大小
- 为什么将指针铸成数字类型是不安全的
- 我应该始终将适当的文字用于数字类型
- 如何识别C中字符串中包含的数字类型
- 如何对具有带符号数字类型的事物进行谓词
- 我可以得到一个适用于任何数字类型的模板化均匀分布生成器吗?
- C++隐式数字类型降级
- 依靠任何数字类型(无符号、整数等)的隐式提升来加倍是否安全
- 用于显示不同数字类型的函数重载
- 创建几个相互不兼容的数字类型
- 同类数字类型之间的转换
- 数字类型介于0和1之间
- 将字符串转换为数字类型的通用方法
- 为小循环计数器选择什么数字类型
- 如何将处理不同数字类型的C函数库包装到c++模板类中
- 如何将来自用户定义文字的可变char模板参数转换回数字类型