gpt4 book ai didi

c++ - 两个整数相乘,结果存入浮点型变量,结果能溢出吗?

转载 作者:行者123 更新时间:2023-11-30 02:40:24 24 4
gpt4 key购买 nike

我一直想知道这样的代码实际上是如何工作的:

int a = 10;
int b = 20;
double c = a * b;

如果整数太大以至于 a*b 大于可以存储在整数类型变量中的最大值怎么办。编译器会注意到目标类型可以容纳更大的值并首先将这些值转换为 double,还是乘法会溢出/回绕?

最佳答案

当将两个整数值相乘时,编译器永远不会自行将结果转换为浮点类型。也就是说,如果将两个 int 值相乘,结果也将是一个 int 值。

因此,您的代码有效地做的是:

int a = 10;
int b = 20;
int tmp = a * b; // Result is actually an int
double c = (double)tmp; // Convert to a double.

因此,只有当结果不能存储在 int 中时,结果才会溢出。对 double 的转换和赋值仅在计算结果后完成。

关于c++ - 两个整数相乘,结果存入浮点型变量,结果能溢出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014435/

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