两个 short 型变量相乘,结果是什么类型的,我如何测出来呢?
            short a = 32767, b = 32767;
            Console.WriteLine(a*b);            a = 1;
            b = 1;
            Console.WriteLine(a * b);            Console.ReadKey();
当a*b没有赋给其他变量时,这个结果是什么类型的呢?
在vb中,因为a,b都是short,所以相乘的结果也是short,这就会导致溢出。
但是c#却不会溢出。我想知道c#如何处理的,
a,b = 32767时,和 a,b=1时,结果的数据类型一样吗

解决方案 »

  1.   

                Console.WriteLine((a * b).GetType());
      

  2.   


                short a = 32767, b = 32767;
                Console.WriteLine((a*b).GetType());
                a = 1; b = 1;
                Console.WriteLine((a*b).GetType());我试了,输出都是 system.int32,看来,只要是short*short,中间结果就转成int型呀。
      

  3.   

    如果你在这里加checked关键字? 嗯。你应该使用checked关键字就知道溢出了,参考
    http://topic.csdn.net/u/20090828/17/f34d80d0-631e-4af7-804d-a500bbd1fcf7.html也可以在属性中修改:
    http://msdn.microsoft.com/zh-cn/library/h25wtyxf.aspx