- byte a=10;
- byte b=10;
- byte c=a+b;
- //编译会出错,因为a+b的结果将类型默认为int类型,把int类型赋给byte类型,会发生字节丢失.所以编译不通过.
- short a=10;
- short b=10;
- short c=a+b;
- //编译会出错,因为a+b的结果将类型默认为int类型,把int类型赋给short类型,会发生字节丢失.所以编译不通过.
- char a=10;
- char b=10;
- char c=a+b;
- /*编译会出错,因为a+b的结果将类型默认为int类型,把int类型赋给char类型,会发生字节丢失.所以编译不通过.*/
- int a=10;
- int b=10;
- int c=a+b;
- /*编译会通过,因为a+b的结果将类型默认为int类型,把int类型赋给int类型,因为类型相同.所以编译通过.这我理解.但是如下:*/
- float f=30.2f;
- float f1=30.2f;
- float f2=f+f1;
- /*也会编译通过,不是说浮点数默为Double吗,那f+f1结果当在内存中时,也是Double,那在赋值给float时,为什么会通过编译呢?*/
复制代码 |