switch语句中关于case的疑问

c#
运行下面代码后,输入95,返回“优秀”,但是case中没有没有提到9.5,这个如何解释?
谢谢
可以给我链接吗?编程新手,手头的教程太粗糙了。。。

using System;

namespace cases
{
    class cases
    {
        static void Main(string[] args)
        {
            int a = Convert.ToInt32(Console.ReadLine());
            switch(a/10)
            {
                case 10:
                case 9:
                    Console.WriteLine("优秀");
                    break;
            }
            Console.ReadKey(true);
        }
    }
}
回复
阅读 1.9k
2 个回答

aint10 也是 int。C# 中类型区分比较严格,纯 int 类型之间的运算结果一定是个 int,所以 95 / 10,从数学上可以得到 9.5,但是在这里,需要对它取整,而且是简单取整,就是直接取整数部分(而不是四舍五入),所以会得到9。

数据应该被强行转换了,9.5会转换成int,所以数据就变成了9,所以返回的就是优秀

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进