gpt4 book ai didi

C 加上 int 和 float,类型变了

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:10 27 4
gpt4 key购买 nike

我不确定我的理解是否正确

  int i = 5;
float f = 3.9;
int result = i + f;

那么当int和float相加时,8.9就变成了8?这是否意味着将较小的数据类型添加到较大的数据类型时会以较小的数据类型给出答案?

或者这个打印 int 是因为它是类型转换的,因为结果是在 int 中声明的?如果是的话,这与将 (int) 放在 i + f 前面有什么不同?

最佳答案

在C中,当两个实数1算术操作数相加时,它们被转换为一个普通类型:

  • 如果任一操作数是long double,则将另一个操作数转换为long double,结果为long double
  • 否则,如果其中一个操作数是double,则另一个被转换为double,结果是double
  • 否则,如果其中一个操作数是float,则另一个被转换为float,结果为float
  • 否则,两个操作数都是整数,适用整数操作数的附加规则。

因此,在您的 i + f 中,i 被转换为 float,将值相加,结果为 float

然后您将其分配给 int。在赋值中,值被转换为目标的类型。所以 float 和被转换为 int

转换算术操作数的规则称为“通常的算术转换”,在 C 2018 6.3.1.8 中指定。分配规则在 C 6.5.16.1 中指定。

注意事项

1 复数的处理方式类似。

关于C 加上 int 和 float,类型变了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53574786/

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