
int s=0;
for(int i=0;i
/*为何 该处没有出错???s为int型 arr[]为double型
*但是s=s+arr[i];是会报错的!!!
}
return s;
}
s+=arr[i];的意思就是s=s+arr[i];,式子左边的解释是: s是int类型,arr[i]是double,所以在加的时磨衫候s会自动转化为double,结果是double类型,也就是说(s+arr[i])的类型是double;加完之后会把结果赋值给s,但是这个时候就出错了,键和因为他将稿游盯一个 double类型的(s+arr[i]) 赋值给 int类型的s ,会失去数据,所以就出错了;
s=s+arr[i]
这样的话会损失精度的,左边为int,右边为double
。携槐。。。double占用的字节比埋迹int多,无法隐式转换成int ,除非你用强制类型转换(int)arr[i],这样做小数点后的数字会弯隐并丢失
只能是小的变量类型隐式转换成大的变量类型 比如double=int,String=double