C# C语言中的强制转换操作优先级#

C# C语言中的强制转换操作优先级#,c#,casting,operator-keyword,operator-precedence,C#,Casting,Operator Keyword,Operator Precedence,下面的差异在C#中会起重要作用吗 你用哪一种?演员阵容将在除法之前出现 在您的示例中,如果一个操作数是double,则不管您使用哪一个操作数,运行时也会将另一个操作数强制转换为double 这看起来像是一个微观优化——不值得担心或处理,除非测量结果表明它确实是一个瓶颈。我这样做: result = (double)a / (double)b; 它可能完全没有必要,但通常我想确保它不会进行整数除法,而且我也不想记住这种情况下的具体规则,因此更容易(如果多击几下键)明确表示。我做(双精度)a/b因

下面的差异在C#中会起重要作用吗


你用哪一种?

演员阵容将在除法之前出现

在您的示例中,如果一个操作数是double,则不管您使用哪一个操作数,运行时也会将另一个操作数强制转换为double

这看起来像是一个微观优化——不值得担心或处理,除非测量结果表明它确实是一个瓶颈。

我这样做:

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

它可能完全没有必要,但通常我想确保它不会进行整数除法,而且我也不想记住这种情况下的具体规则,因此更容易(如果多击几下键)明确表示。

我做
(双精度)a/b
因为我认为int是不可分割的东西,比如岩石或其他东西。当它被抛到一个双倍的时候,它就像蛋糕一样可以被分割。你可以把3.0块蛋糕分成四份,但不能把三块石头分成4.0份。或者别的什么。有什么意义吗?

只要确保你没有使用
result=(双精度)(a/b)这些都不是必需的<代码>a
b
已经是双倍的。结果变量是双精度的。唯一不会是双打的是两个双打的除法结果。如果我没有弄错的话,在这种情况下,从整数到双精度的转换是自然的。@Ramhound
a
b
是整数,而不是双精度的。执行
result=a/b
将导致一个整数除法,然后将a转换为double。实际上,我这样做是因为我不想记住细节。但是我决定改变我的懒惰习惯,所以我问了这个问题。(顺便说一句,我没有给你-1)我主要关心的是计算结束时的精度。我担心无论我选择哪一个(首先,明确地)都会产生影响。但既然你说里面的每个人都会被抛弃,我就相信你。@Jake-相信,但请验证一下。。。这是你可以自己轻松测试的东西(只需编写一个进行不同类型计算的小应用程序),实际上,这个小应用程序不会证明任何东西。测试操作数的一小部分不能代表所有可能操作数的结果,除非首先确定它是这样实现的。所以我不得不问这个问题。
result = (double)a / (double)b;