Code Bye

C#有没有整数提升的规则,也就是无符号数和有符号的运算,提升成无符号

C/C++的规则是,假如一个Unsigned和一个signed做数学运算,结果就是一个足够大能包含结果的unsigned。
但是C#似乎没有这样的规则。本人想知道C#的标准(spec)有没有这方面的规定? 例如
            short s1 = 3000;
            ushort s3 = 40000;
            var v = s1 * s3;
            Console.WriteLine(v.GetType().ToString());

打印的结果是v的类型是System.Int32而不是UInt32。
有标准/规则吗?

解决方案

40

7.2.6.2 Binary numeric promotions
连接:
https://msdn.microsoft.com/zh-cn/library/aa691330(v=vs.71).aspx

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#有没有整数提升的规则,也就是无符号数和有符号的运算,提升成无符号