设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
C#中byte 万分感谢
返回列表
发新帖
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 这里的强制转化是必须的,的确可能出现影响效率的问题。所以鱼和熊掌不能兼得,在时间(效率)和空间(内存)的关系上必须权衡利弊。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行