C#中byte 万分感谢
C#中的byte类型好像不能直接可以常量加减运算啊比如bytea=1+1;需要强制转换,如果多了的话影响执行效率吧但它占得内存少啊没有别的办法补救吗...
C#中的byte类型 好像不能直接可以常量加减 运算啊 比如 byte a=1+1;
需要强制转换,如果多了的话 影响执行效率吧 但它占得内存少啊 没有别的办法补救吗 展开
需要强制转换,如果多了的话 影响执行效率吧 但它占得内存少啊 没有别的办法补救吗 展开
3个回答
展开全部
可以常量加减 运算
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赋值;
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赋值;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以直接加减运算:c#编译器已经做了优化。
所以byte a = 1 + 1 与byte a = (byte)(1 + 1) 都是对的,因此不会影响效率。
你可以测试下byte a = 500 + 1 将在编译时报错,而不是运行时,从而反证这个结论。
但是对于变量就不同了:
int a = 2;
byte b = (int)a 这里的强制转化是必须的,的确可能出现影响效率的问题。所以鱼和熊掌不能兼得,在时间(效率)和空间(内存)的关系上必须权衡利弊。
所以byte a = 1 + 1 与byte a = (byte)(1 + 1) 都是对的,因此不会影响效率。
你可以测试下byte a = 500 + 1 将在编译时报错,而不是运行时,从而反证这个结论。
但是对于变量就不同了:
int a = 2;
byte b = (int)a 这里的强制转化是必须的,的确可能出现影响效率的问题。所以鱼和熊掌不能兼得,在时间(效率)和空间(内存)的关系上必须权衡利弊。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询