黑马程序员技术交流社区

标题: 自动转换和强制类型转换的区别? [打印本页]

作者: 周平武    时间: 2012-2-10 11:46
标题: 自动转换和强制类型转换的区别?
本帖最后由 周平武 于 2012-2-10 18:48 编辑

什么时候自动转换,什么时候需要强制类型转换?
作者: 黄晓波    时间: 2012-2-10 16:24
一般说:
1)小范围的到大范围的就是自动转换。
比如:
int a=10;
long b;
b=a;
说明:在这里是将int类型的变量的值赋值给long类型的变量,但是因为long类型的范围比int大,所以自动转换就可以。
2)大范围类型的变量的值赋给小范围类型的变量的时候,就需要强制转换才能成功。
例如:
long a=10;
int b;
b=a;
编译则不会成功,需要强制转化,但是可能会有数据溢出。即:b=Convert.ToInt32(a);
说明:int、long、float、double、用户自定义的结构类型、枚举类型等都是属于值类型,string、char,接口类型、类类型等属于引用类型。
3)不同类型(值类型和引用类型)之间的转换需要强制转换。
例如:
string a="";
int b;
b=Convert.ToInt32(a);
作者: 周平武    时间: 2012-2-10 17:32
谢谢,我自己已经清楚了
作者: 双十二    时间: 2012-2-10 21:36
可以这样理解,会比较好记:
如果转换可能造成进度丢失,那么一定是要用强制转换的,
如果没有丢失精度的可能,那么编译器就可以进行隐式转换。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2