i = i ++; 求助 Java ,c++ ,c#中内存的运算区别
在c++中
int i =3;
i=i++;
i的值是4;
在java中 是 3
在c#中 static void Main(string[] args)
{
System.Int32 a = 3;
a = a++;
Console.WriteLine("{0}",a);
}
也是3;
这是为什么啊?我只知道Java中是怎么算的 但是我就是不理解c和c++是怎么算的? 内存 c++ java c# c
[解决办法]
不用理解这个
c语言中明确说明这种行为是未定义的,也就是说全靠编译器自行处理
所谓的理解,也不过是一种编译器的行为,没有意义
[解决办法]
不能这样写代码,即使执行效率更高
[解决办法]
在c++中
int i =3;
i=i++;
i的值是4;
在i=i++;中,i首先把值3赋给i,然后++又对i自增1,结果当然是4
看看C++ BUILDER生成的这段汇编代码:
;int i=3;
;
?debug L 12
@1:
mov dword ptr [ebp-4],3
;
;i=i++;
;
?debug L 13
mov eax,dword ptr [ebp-4]
mov dword ptr [ebp-4],eax
inc dword ptr [ebp-4]