Jad*_*ias 10 .net c# variables
我有这样的方法:
void Method(short parameter)
{
short localVariable = 0;
var result = localVariable - parameter;
}
Run Code Online (Sandbox Code Playgroud)
为什么结果Int32
而不是Int16
?
Hen*_*man 11
它不仅仅是减法,只是没有短(或字节/字节)算术.
short a = 2, b = 3;
short c = a + b;
Run Code Online (Sandbox Code Playgroud)
会给出错误,它不能将int(a + b)转换为short(c).
几乎从不使用短片的另一个原因.
附加:在任何计算中,short和sbyte将始终"扩展"为int,ushort和byte to uint.这种行为可以追溯到K&R C(并且可能比这还要老).
(旧的)原因是,处理char时,afaik,效率和溢出问题.最后一个原因不再适用于C#,其中char是16位且不能隐式转换为int.但非常幸运的是,C#数字表达式在很大程度上与C和C++保持兼容.
默认情况下,所有具有小于Int32的整数的操作都会扩展为32位.结果是Int32的原因只是在计算之后保持原样.如果检查MSIL算术操作码,则它们使用的唯一整数数字类型是Int32和Int64.这是"按设计".
如果您希望以Int16格式返回结果,那么如果您在代码中执行强制转换,或者编译器(hypotetically)在"引擎盖下"发出转换则无关紧要.
此外,上述示例可以通过演员轻松解决
short a = 2, b = 3;
short c = (short) (a + b);
Run Code Online (Sandbox Code Playgroud)
这两个数字将扩展为32位,被减去,然后被截断回16位,这就是MS的预期.
使用短(或字节)的优点主要是存储大量数据(图形数据,流媒体等)的情况
PS哦,文章对于发音以辅音开头的单词是"a",对于发音形式以元音开头的单词是"an".一个数字,AN int.;)
归档时间: |
|
查看次数: |
2157 次 |
最近记录: |