今天在编写代码时,我遇到了这个问题。以以下代码为例:
long valueCast = (long)(10 + intVariable);
long valueTyped = 10L + intVariable;
这两者之间是否有任何区别,或者它们编译成完全相同的结果?有哪种约定比另一种更好吗?所以我知道这不是一个关键性的问题(两个都能工作)。我只是非常好奇它们之间可能存在的差异! 编辑 - 修改了代码示例,使其更接近于我的原始情况。我想让问题更清楚,所以我用常量替换了变量。没意识到编译器会自动执行算术运算(从而改变了这个问题的答案)。
long p = (long)(a * b * c * d * e);
,而实际想要的是long p = (long)a * b * c * d * e);
。 - Eric Lippert