s1 = s1 + 1不可以编译;这是因为s1是short类型,但跟1(数字默认是int类型)相加其结果就是int了,因为short占二个字节(就是16位咯)而int占四个字节(就是32位了)为了不溢出(也就是所谓的损失精度)他们的和肯定是int类型。但是其结果却是赋给了为short类型的s1,这不就矛盾了么?(就相当于你喝水的水杯容量假设为1000ML,而你现在却要往里面倒2000ML的水。你想想有没得问题,可能装的下吗?)
至于s1 += 1为什么可以通过编译这个很简单。+=这个运算符就是将那个和强制给转换成了short的类型赋给了原来的s1(其实这是在内存中将原来s1的给取代了(覆盖了))所以就可以了。
不知道兄台懂了没有,如果没有的话我真的想现在去洗个冷水澡给自己清醒清醒。
敝人也才自学没多久,祝你好运。 |