之间是否存在差异:
double dandouble = 5.23493; //or some other random number
if (dandouble < 0.0)
dandouble = 3.5;
和
double dandouble = 5.23493; //or some other random number
if (dandouble < 0)
dandouble = 3.5;
或者他们会得到相同的结果吗?
答案 0 :(得分:3)
编译器必须发出Opcodes.Clt IL instruction才能进行比较。 CLI规范规定了指令的可接受参数,不允许使用double和int。意识到这些规则,编译器会提升参数以获得有效组合,double和double是第一个匹配。它有足够的智慧来识别int参数是一个文字。所以不发出任何IL进行转换,它直接发出一个Opcodes.Ldc_R8为0.0
没有区别。
答案 1 :(得分:1)
没有区别。他们是一样的。
答案 2 :(得分:1)
double a = 0.0000000000001;
int b = 0;
res = a <= b; // False
res2 = b >= a; // False
鉴于上述测试,我说C#选择了最少的有损转换。 (不是左侧或右侧的偏好)
所以回答你的问题,不。没有区别。