【问题标题】:Precedence of cast in c# [duplicate]c#中强制转换的优先级[重复]
【发布时间】:2013-02-12 03:57:02
【问题描述】:

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

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

【问题讨论】:

  • 嗯..你试过了吗?
  • 是的,我试过了,但我认为如果我将代码放入问题中会很方便。我发现@Steve 引用的问题太含糊了,如果有更好的例子会更清楚。

标签: c# operators


【解决方案1】:

强制转换优于所有二元运算符的绑定。因此 (int)x / y 表示 ((int)x)/y。

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

((int)x) / y

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

【讨论】:

    【解决方案2】:

    小于:

    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

    【讨论】:

      【解决方案3】:

      z 将少于两个:

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

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

      【讨论】:

        猜你喜欢
        • 2012-04-13
        • 2021-06-25
        • 1970-01-01
        • 1970-01-01
        • 2019-05-15
        • 2013-03-16
        • 1970-01-01
        • 2014-07-05
        • 1970-01-01
        相关资源
        最近更新 更多