C#中byte 万分感谢

[复制链接]
查看11 | 回复1 | 2010-5-5 20:58:56 | 显示全部楼层 |阅读模式
可以常量加减 运算byte a=1+1;因1是int类型,所以1+1的结果也是int类型。int 类型大于byte类型,隐式转换有丢失数据的可能。所以会提示错误。值类型中 值域小的类型可以隐工转换为大的类型(比如byte可以隐式转换为int类型。注意有符号不可隐式转为无符号。因为有可能会有数据丢失)可以写为:
byte a=(byte)(1+1);如结果大于255 a的值为1 我试的是这样的。你也可以试一下。如a=(byte)(255+1);可以用checked防止这种可能。如int a=4;int b=20;byte c;checked{c=(byte)(a+b);}如果a+b的值不大于byte的最大值会正常转换。如果a+b的值大于byte的最大值会有错误提出。不会给c赋值;
回复

使用道具 举报

千问 | 2010-5-5 20:58:56 | 显示全部楼层
可以直接加减运算:c#编译器已经做了优化。所以byte a = 1 + 1 与byte a = (byte)(1 + 1) 都是对的,因此不会影响效率。你可以测试下byte a = 500 + 1 将在编译时报错,而不是运行时,从而反证这个结论。但是对于变量就不同了:int a = 2;byte b = (int)a 这里的强制转化是必须的,的确可能出现影响效率的问题。所以鱼和熊掌不能兼得,在时间(效率)和空间(内存)的关系上必须权衡利弊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行