This question already has answers here:
C++ program converts fahrenheit to celsius
                                
                                    (8个答案)
                                
                        
                                4年前关闭。
            
                    
为什么

 float bla = ( 5/9 )* (100 - 32) result in 0 * 100 -> 0 ?




float bla= 5*(100- 32) / 9;


锻炼?
他似乎将5/9视为整数并将其立即设置为0,但结果变量是浮点数,因此编译器应该知道他可以使用5/9还是?

最佳答案

使用正确的文字,以便获得正确的数学行为

float bla = 5.0f * (100.0f - 32.0f) / 9.0f;


请注意以下简短列表

5      // int
5l     // long
5.0    // double
5.0f   // float
5ul    // unsigned long


integer literalsfloating point literals的更全面列表

在您的示例中,整个右侧都在int操作中执行,然后最终结果隐式转换为float。到那时为时已晚。

记住,using the correct literal is important

关于c++ - C++不需要5/9,并且似乎将其转换为类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27971967/

10-14 06:41