Shi*_*h11 2 c++ delphi coding-style
我碰巧遇到了一些类似的编程风格,主要是在有Float或Double操作时.
ratio = 1.0 * (top - bottom) / (right - left);
Run Code Online (Sandbox Code Playgroud)
涉及的所有变量都是浮点数 与结果相乘
的意义是什么1.0?
根据我的想法,乘法1.0是一些额外的负担.因为结果不会改变.
或者它类似于写一个条件and 1==1.
PS:在某些情况下,某些变量(比率除外)被指定为非Float/double值作为long或整数.
C/C++
当一个或多个变量的top,bottom等都是类型的double,则相乘1.0是没有意义的.您应该删除它,因为它没有用处.当所有变量都是类型时,float则乘以double文字会1.0强制使用双精度算术计算表达式.
另一方面,当所有变量都是整数时,乘法1.0强制计算用浮点运算执行.如果没有乘法,则将使用整数运算执行计算,这将产生不同的结果.
我的猜测是代码最初使用整数而且1.0需要.在某个时间点,代码被更改为使用浮点变量,但现在的虚假乘法未被删除.
德尔福
如果你在Delphi代码中看到这样的表达式,那么你应该简单地删除乘法.除法运算符的存在迫使表达式被计算为浮点表达式.
Delphi表达式评估的规则与C和C++略有不同.在C和C++中,单个符号/用于整数和浮点除法,表达式的上下文确定使用哪种除法形式.Delphi /中的浮点除法div是整数除法.