为什么cout的输出<< 7/9*9; 是零?

4 c++ integer-division

为什么以下代码的输出等于0或serven?

cout << 7/9*9;   //output 0 (zero)   why?

float nine = 9;
float seven = 7;
float i = seven/nine*nine;
cout << i     //output 7   Why?
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

Jac*_*cob 31

7/9*9将这些数字评估为整数,因此7/9的计算结果为0,0*9 = 0.

当你使它们浮动时,你正在执行预期的计算.

尝试7.0/9*9得到7,然后你将进行浮点运算.

  • 对于世界其他地区(亚洲)的程序员来说太糟糕了,我们无法赶上喋喋不休的低调问题:-) (2认同)

Kai*_*Kai 6

在C中,当您对整数进行除法时,其余部分将被丢弃.在这里,你正在做7/9,然后取结果并乘以9.在步骤中,接下来是C的想法:

7 / 9 = 0
0 * 9 = 0
Run Code Online (Sandbox Code Playgroud)

使用浮动时,它可以正常工作,因为其余部分不再被丢弃.


R S*_*hko 5

在:

cout << 7 / 9 * 9;
Run Code Online (Sandbox Code Playgroud)

你正在做整数运算.所以7/9是0而0*9是0.

要使用浮点运算(这是您在第二个示例中使用的),您要执行以下操作:

cout << 7.0 / 9 * 9;
Run Code Online (Sandbox Code Playgroud)