1

c#中强制转换的优先级是什么?例如在下面的代码中,z 是否会小于或等于 2?

double x = 4.5;
double y = 2.1;
double z = (int) x / y;
4

3 回答 3

3

演员在绑定方面击败了所有二元运算符。因此 (int)x / y 表示 ((int)x)/y。

另一方面,你应该总是更喜欢可读的代码而不是聪明的代码,所以既然你不知道你应该写下面的代码:

((int)x) / y

请注意,括号是免费的,并使您的代码更具可读性。

于 2013-02-12T04:03:30.380 回答
1

少于:

using System;

public class Test
{
    public static void Main()
    {
        double x = 4.5;
        double y = 2.1;
        double z = (int) x / y;
        Console.WriteLine(z);
    }
}

见这里:http: //ideone.com/fhg5ai

于 2013-02-12T04:02:02.483 回答
1

z将少于两个:

    double x = 4.5;
    double y = 2.1;
    double z = (int) x / y;
    Console.WriteLine(z); //1.9047619047619

您的代码确实在执行此操作:((int)x) / y,这可能是您的预期输出,也可能不是。

于 2013-02-12T04:03:28.657 回答