首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

i = i ++; Java ,c++ ,c#中内存的运算区别

2013-10-29 
i i ++ 求助 Java ,c++ ,c#中内存的运算区别在c++中 int i 3ii++i的值是4;在java中 是 3在c#中stat

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]

热点排行