Byte b = 60; b = b + 60; 会报错:Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?) 我理解是因为运算时100为int型,统一用32为值来做加法,但是运算完把结果120赋值给b时,由于b是Byte型,所以出错!但是:为什么Byte b = 60; b += 60; 这样写就是ok的呢????? 哪位了解内部机制的解释下?
最好是如果以后碰到类似问题,怎么调式看以自己解决问题??? 谢了!!!!
最好是如果以后碰到类似问题,怎么调式看以自己解决问题??? 谢了!!!!
解决方案 »
- dataGridView1 在线等送分
- 关于单链表的一点小疑问!
- vss 2005版本控制, 备份后生成.ssa文件,但是恢复的时候总失败
- C#未处理 System.Data.SqlClient.SqlException{" ' ' 附近有语法错误。"}
- Winform table行绑定问题??
- new 与 override 的区别?
- vc void** 与 c# 下的 类型 怎么 匹配
- 谁看过head first C#这本书?
- 对于C#问题的补充
- JAVA写的一个加密工具类,求大牛改写成PHP、C#、C++、Python等版本
- C#,.NET中textbox如何实现输入索引查询,如谷歌百度的搜索框
- windowForm下TextBox不能获取焦点,并且颜色为我自己设置的颜色
b += 60;
Console.WriteLine(b);
1 取出b byte
2 取出60 int
3 加法 得到120 int 存入临时变量
4 赋值给bb+=60
1 取出b byte
2 取出60 byte 强制类型转换
3 相加直接赋值到bb++
1 取出b并加1 存入临时变量
2 赋值到b++b
1 直接加1
所以你的意思就是b+=60中,系统会自动对60做强制转换成Byte类型,对吧?
b=b+60 b+60是整型b+=60 60 是个常量,类型是左边的决定,b是byte型
b = byte.Parse((b + 5).ToString()); 强制类型转换下就不会出错了
byte b = 2;
b += 256;
常量值“256”无法转换为“byte”
b+=60
.net 对应+=的操作符,都已经对类型进行了强制转换。 并且是隐式强制转换成左边(b)的类型。
小类型转大类型不行就是这样 呵呵
long>int>shot>byte