看了上面大家的观点,虽说结果都对,但原理解释起来好像有问题。
大部分人都说“因为每次 j 都是先把0赋给 j 再自增的,所以把0给自己赋了100次”,后半句是没有问题,确实是 j 被0赋值100次。
可是前半句的说法上有问题,如果是“每次都先把0赋值给 j 再自增”,那岂不是执行的是“ j = j; j++;”?
而实际上“ j = j++; ”,这个语句的执行过程是,从赋值运算符右边开始先执行 j++,此时 j 的值已经是 1了,只不过参与运算的值是0,然后执行的是把0赋值给值已经变为1的 j,如此才解释的通。
否则,如果 j++在赋值之后完成,那 j 的值应该每次循环都能自增。
这个程序的意义在于,让我们更细致的了解了所谓自增运算的原理。 |