在C#中转换运算符优先级

时间:2012-03-29 12:52:23

标签: c# casting operator-keyword operator-precedence

C#中的差异是否会显着影响?

int a, b;
double result;
result = (double)a / b;
result = a / (double)b;
result = (double)a / (double)b;

你使用哪一个?

3 个答案:

答案 0 :(得分:10)

演员阵容将在分组前发生。

在您的示例中,您执行哪一个操作并不重要,就像一个操作数是double一样,运行时也会将另一个操作数转换/转换为double。

这看起来像是一种微观优化 - 除非测量显示它确实是一个瓶颈,否则不值得担心或处理。

答案 1 :(得分:2)

我这样做:

result = (double)a / (double)b;

这可能是完全没必要的,但一般来说我想确定它不会进行整数除法,而且我真的不想记住这个场景的具体规则,所以它更容易(如果还有几次击键)要明确。

答案 2 :(得分:1)

我做(double)a / b因为我认为int是不可分割的东西,就像摇滚之类的东西。当铸成双倍时,它就像蛋糕一样可分割。你可以分为四个部分分开3.0个蛋糕,但你不能分成4.0个部分的三个岩石。或者其他的东西。有意义吗?