long a = 200;将变量a定义成long类型,long类型占8个字节。
int b = 100;变量b是int类型占4个字节,当int c = a+b;的时候,变量b会自动提升为long类型(int-->long转换),所以a + b的值是long类型的。然后将结果赋给int型变量c,当然就会出现精度丢失的情况了。
低精度可以自动向高精度转换,高精度不会自动向低精度转化
long 的 精度比 int 高 所以这条语句 int c = a + b; 是错误的
有三种解决方法:
1,把 b 的数据类型改成 int;
2,把 c 的数据类型改成 long;
3,对a+b的结果强制转换为 int 如:int c=(int)(a+b);