第一点:i=0; i=i++;
对这句话,各种编译器出来的结果是不同的,但我们可以这样理解执行过程:
1、读取右边i的地址;
2、执行i++, i++ 返回的值是 0;
3、读取左i的地址;
分歧在第四步:
(1)如果编译器认为左右i的地址是相同的,赋值再加1,所以i的值是1(VC6.0测试结果为1)
(2)如果编译器认为左右i的地址是不同的,将右边i++的地址赋给左边i时,得到的结果为0,(DEV-c++,java中测试结果为0)
第二点:
第一篇:关于i++,++i的若干问题
最新推荐文章于 2024-10-16 09:40:44 发布