我对c++很熟悉,但今天我注意到了一些事情,
float a=(float)5/2; //this gives 2.5, its okay
float b=(float)(5/2); //this gives 2, why?请你说出这个话题,任何答案都会帮助我。
发布于 2022-09-10 08:38:51
在括号(5/2)中的这个表达式中,使用了整数算法。表达式的结果是2。
在这个表达式(float)5/2中,使用了浮动算法,因为其中一个操作数在显式转换(float)5之后具有float类型。一元浇铸操作符比除法操作符/具有更高的优先级。
你可以写得相当好
5.f/2发布于 2022-09-10 09:14:14
这是一个运算符优先的问题。当你写
(float)5/2它被解释为
((float) 5) / 2这意味着“将5视为一个浮点数,然后将其除以整数2”。因此,除法是作为浮点除法进行的.
当你写
(float)(5/2)您的意思是“整数5除以整数2,然后将其视为浮点数。”因此,所做的除法是整数除法,这样就可以得到2作为结果。
https://stackoverflow.com/questions/73670405
复制相似问题