隐式类型转换可以从小到大自动转,即byte->short->int->long如果反过来会丢失精度,必须进行显示类型转换
而s+=1的意思与s = s+1不同,s=s+1这句先执行s+1然后把结果赋给s,由于1为int类型,所以s+1的返回值是int,编译器自动进行了隐式类型转换
所以将一个int类型赋给short就会出错,而s+=1不同由于是+=操作符,在解析时候s+=1就等价于s = (short)(s+1),翻番来讲就是
s+=1 <=> s = (s的类型)(s+1)
希望对你有帮助!
隐式类型转换可以从小到大自动转,即byte->short->int->long如果反过来会丢失精度。
必须进行显示类型转换而s+=1的意思与s = s+1不同,s=s+1这句先执行s+1然后把结果赋给s,由于1为int类型,所以s+1的返回值是int,编译器自动进行了隐式类型转换。
将一个int类型赋给short就会出错,而s+=1不同由于是+=操作符,在解析时候s+=1就等价于s = (short)(s+1),翻番来讲就是 s+=1 <=> s = (s的类型)(s+1)
数据类型不同了,s = s + 1,这里的s会转换为int类型,这样会产生精度丢失的问题所以要强制转换为short类型,s = (short)(s + 1)。s += 1数据类型还是short。转换了2个就没区别了。
(*s++) 解引用得到s指向位置的值,将该值作为表达式的结果,然后s指针往后偏移
s++ 就s指针往后偏移
*s++ 解引用得到s指向位置的值,将该值作为表达式的结果,然后s指针往后偏移。和第一个一样。
(*s)++ 解引用得到s指向位置的值,然后将该值做自加,新值作为表达式的结果值
前面3处的++都是作用在指针上,也就是地址上
最后1个++是作用在指针指向地址上的数值上
这是简写,没有区别