短+短!=短? [复制]
Posted
技术标签:
【中文标题】短+短!=短? [复制]【英文标题】:short + short != short? [duplicate] 【发布时间】:2015-05-06 13:13:56 【问题描述】:版本:Visual Studio Professional 2013 Update 4 构建参数:Prefer 32-bit 为真
我不明白以下 C# 代码中的错误:
short iCount = 20;
short iValue = iCount + (short)1;
向转换为 short 的 int 添加 short 会导致以下错误:
无法将类型“int”隐式转换为“short”。存在显式转换(您是否缺少演员表?)
上面的错误,也出现在下面的例子中,在这里完全有效:
short iCount = 20;
short iValue = iCount + 1;
以下解决方法可消除错误:
short iCount = 20;
short iValue = (short)(iCount + 1);
所以“short + Int32 constant”形式的加法显然有效,结果是 Int32,需要将其强制转换为 short。
有没有解释为什么第一个代码示例失败或者这是一个编译器错误? (4次更新后我简直不敢相信)
【问题讨论】:
看看这个answer Related Related 也相关:***.com/questions/10065287/… 现代架构是为 32 位或 64 位算术构建的。+
运算符将 16 位整数“提升”为 32 位,然后执行 32 位加法,得到 32 位结果,这更有效。尽管可能出乎意料,但这是设计使然,如 C# reference 中所述。
【参考方案1】:
Int 是为其定义了 + 运算符的最小有符号类型,因此尝试在 short 上使用 + 会导致这种错误。
【讨论】:
有趣!更完整的答案可以找到here以上是关于短+短!=短? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 MVS 2010 的代码中出现绿色短划线和绿色框? [复制]
使用 jQuery 创建帖子表单并提交它的最短方法是啥? [复制]