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

yrewqr 2016-07-17 10:18:26
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。
有标准/规则吗?
...全文
164 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2016-07-17
  • 打赏
  • 举报
回复
引用 楼主 yrewqr 的回复:
如果一个Unsigned和一个signed做数学运算,结果就是一个足够大能包含结果的unsigned。
结果肯定是signed,也不知道谁教你的
  • 打赏
  • 举报
回复
你打印出来的就是“.net 的规定”,还要什么c++规定?
Forty2 2016-07-17
  • 打赏
  • 举报
回复
7.2.6.2 Binary numeric promotions 连接: https://msdn.microsoft.com/zh-cn/library/aa691330(v=vs.71).aspx

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧