Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 条件语句中的0与0.0_C#_Zero_Conditional Statements - Fatal编程技术网

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