C# 条件语句中的0与0.0
以下两者之间是否有区别:C# 条件语句中的0与0.0,c#,zero,conditional-statements,C#,Zero,Conditional Statements,以下两者之间是否有区别: double dandouble = 5.23493; //or some other random number if (dandouble < 0.0) dandouble = 3.5; double dandouble=5.23493//或者其他一些随机数 如果(dandouble
double dandouble = 5.23493; //or some other random number
if (dandouble < 0.0)
dandouble = 3.5;
double dandouble=5.23493//或者其他一些随机数
如果(dandouble<0.0)
丹杜布尔=3.5;
及
double dandouble=5.23493//或者其他一些随机数
如果(dandouble<0)
丹杜布尔=3.5;
或者结果会一样吗?没有区别。它们是一样的。没有区别。它们是相同的。
双a=0.0000000000001;
double a = 0.0000000000001;
int b = 0;
res = a <= b; // False
res2 = b >= a; // False
int b=0;
res=a=a;//假的
鉴于上述测试,我认为C#选择损耗最小的转换。(不是左侧或右侧的首选项)
所以要回答你的问题,没有。没有区别。double a=0.0000000000001;
int b=0;
res=a=a;//假的
鉴于上述测试,我认为C#选择损耗最小的转换。(不是左侧或右侧的首选项)
所以要回答您的问题,没有。没有区别。编译器必须发出。CLI规范规定了指令的可接受参数,不允许使用double和int。了解这些规则后,编译器会提升参数以获得有效的组合,double和double是第一个匹配项。它有足够的智能来识别int参数是一个文本。因此,不发射任何IL来进行转换,它直接发射0.0的Opcodes.Ldc_R8
没有区别 编译器必须发出以进行比较。CLI规范规定了指令的可接受参数,不允许使用double和int。了解这些规则后,编译器会提升参数以获得有效的组合,double和double是第一个匹配项。它有足够的智能来识别int参数是一个文本。因此,不发射任何IL来进行转换,它直接发射0.0的Opcodes.Ldc_R8 没有区别
double a = 0.0000000000001;
int b = 0;
res = a <= b; // False
res2 = b >= a; // False