Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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/9/solr/3.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
在Visual C#中是否会发生隐式向上转换?_C# - Fatal编程技术网

在Visual C#中是否会发生隐式向上转换?

在Visual C#中是否会发生隐式向上转换?,c#,C#,double b=1.5*a,其中a是一个float变量 在Visual Studio 2010上的Visual C#中执行乘法之前,是否将a强制转换为double,如果这是您的意思,则浮点将转换为double乘法之前 float a = 1.2F; double b = 1.5*a; 给出: L_0000: nop <========== just because I'm in debug mode L_0001: ldc.r4 1.2 <=== load the float v

double b=1.5*a
,其中
a
是一个
float
变量


在Visual Studio 2010上的Visual C#中执行乘法之前,是否将
a
强制转换为
double

如果这是您的意思,则浮点将转换为
double
乘法之前

float a = 1.2F;
double b = 1.5*a;
给出:

L_0000: nop <========== just because I'm in debug mode
L_0001: ldc.r4 1.2 <=== load the float value 1.2
L_0006: stloc.0 <====== store in "a"
L_0007: ldc.r8 1.5 <=== load the double value 1.5
L_0010: ldloc.0 <====== load "a"
L_0011: conv.r8 <====== widen the value we obtained from "a" to become a double
L_0012: mul <========== multiply as double
L_0013: stloc.1 <====== store in "b"
L_0014: ret <========== all done

L_0000:nop根据规则,“a”的类型没有变化,在这种情况下它将保持浮动。
表达式的结果将以双隐式的方式计算,但是“a”的值在计算之前将加倍,

在下列情况下,它将在评估前转换为加倍

double b = 1.5 * (double)a ;

L_006存储在
a
b
中?存储在
a
我想。@Marc Gravell:如果“b”变量的类型是float,1.5会转换成double吗??如果“b”的类型是float,表达式将如何计算???@Mahesh您需要添加一个
(float)
,以便对其进行编译。乘法将是完全相同的;您只需在
mul
stloc.1
之间获得一个额外的
conv.r4
,将双重乘法的结果更改为float@MarcGravell:上面的表达式的评价在Visual C++ 6??@ MaHeSH中保持不变吗?你必须问一个C++的人。