使用强制转换或隐式强制转换进行int分割是否存在性能差异
例如
int a = 7;
int b = 3;
float x = ((float)a)/b;
or
float y = (a+0f)/b;
答案 0 :(得分:3)
正如评论所指出的,由于运营商优先规则,这两个版本是不同的。
float y = a + 0f / b;
实际上相当于
float y = a + (0f / b);
即
float y = a;
你应该写
float y = (a + 0f) / b;
如果您获得运算符优先级正确,则在语义上或在性能方面没有区别。 (JIT编译器极有可能优化零人工添加。)
但是,有一个重要的区别。你的第二种形式是一种不寻常的习语,不同寻常的习语让其他人更难阅读你的代码。最好以“正常”的方式编写代码......如果您(或您的老板!!)预期其他人可能需要阅读/维护它。
(如果你养成了使操作符优先级错误的习惯,他们可能需要比你预期的更快地读取你的代码... :-))