在C ++中将float变量除以整数变量时的结果类型

时间:2018-12-28 13:46:05

标签: c++

我在c ++上的geeksforgeeks.com上解决了一个问题,该问题由我在操作后确定变量的结果类型。

输入: 1个 1 2 3 5 gfgc

输出: 4 8 4 8 32 1

Example:
Testcase 1:
b/c = 2/3 =>sizeof(2/3)=>float size is 4 bytes

"b/a = 2/1 =>sizeof(2/1)=>double size is 8 bytes"

c/a = 3/1 =>sizeof(3/1)=>integer size is 4 bytes
(c/a)+l =3+5= 8 =>sizeof(8)=>long long size is 8 bytes
sizeof(gfgc) = 32 => It is not 4 because of the reason listed here
sizeof(c) = 1 as it is just a character.

有人可以解释引号行中显示的输出背后的原因吗?

1 个答案:

答案 0 :(得分:3)

给出float aint b(反之亦然),并将表达式auto c = a/b ab强制转换为{{ 1}}用于划分,而floatc

更一般而言,如果任何一个操作数都是浮点类型,则结果类型将是该列表中在表达式floatlong doubledouble中找到的第一个类型;另一个操作数将转换为该类型。如果两个操作数都是整数,则适用类似的规则。

这些是“常规算术转换”。请参阅[expr.arith.conv]