c++的左值右值 i++与++i的区别_c语言i和i的区别
c++的左值右值 i++与++i的区别由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言i和i的区别”。
1.概念变量和文字常量都有存储区,并且有相关的类型,区别在于变量是可寻址的;
对于每个变量,都有2个值与其相关联:
1>数据值,存储在某个内存地址中,也称右值(rvalue),右值是被读取的值(read value),文字常量和变量都可被用于右值。
2>地址值,即存储数据值的那块内存地址,也称左值(lvalue),文字常量不能被用作左值。2.问题给表达式加上括号:
++a--
结果 ++(a--)
这个表达式是非法的,因为前增量操作要求一个可修改的左值,而 “a--” 不是左值(即右值)3.前增量和后增量的区别
早期的c语言教材,for循环语句通常写成:
for(int i=0;i
而现在多为:
for(int i=0;i
a++ 即是返回 a的值,然后变量 a 加 1,返回需要产生一个临时变量类似于
{ int temp = a;
a=a+1;
return temp;//返回右值 }
++a 则为:
{ a=a+1;
return &a;//返回左值 }
显然,前增量不需要中间变量,效率更高。
详细说下;
计算下:
int i=1;
System.out.println((i++)+(i++)+(i++)+(++i)+(i++)+(++i));
计算步骤详细说下
最佳答案:
首先得明白i++和++i的本质区别,i++是先赋值左操作数,然后i+1而++i是i先+1然后赋值给左操作数。你可以在以下的汇编代码看出来,程序是
int i=1,k;
k=i++;
k=++i;
//汇编代码如下
5: int i=1,k;
//[ebp-4存放的是i,因为每个int占用4字节]
0040D708 mov dword ptr [ebp-4],1//i先赋值1
6: k=i++;
0040D70F mov eax,dword ptr [ebp-4] //先将i赋给ax
//[ebp-8]是k存储的地方,ax的值赋给k(注意此时ax=i=1)
0040D712 mov dword ptr [ebp-8],eax
//下面三行是增加i的值,注意下面没有改变k的值,即k=1,而i=2
0040D715 mov ecx,dword ptr [ebp-4]
0040D718 add ecx,1
0040D71B mov dword ptr [ebp-4],ecx
7: k=++i;
0040D71E mov edx,dword ptr [ebp-4]//dx=i=2
0040D721 add edx,1 //dx+1=3赋给dx
0040D724 mov dword ptr [ebp-4],edx //dx赋给i即i=3
0040D727 mov eax,dword ptr [ebp-4] //i的值赋给ax
0040D72A mov dword ptr [ebp-8],eax //ax=i=3给k此时k=i=3
所以你的这一题应该是
(i++)+(i++))+(i++)+(++i)+(i++)+(++i));
最前面的三个i++时i的值并没有变化还是1所以是1+1+1
第四个++i那么此时i=2
第5个i++那么i还是没变,所以i=2
最后一个是++i,那么i=3
所以结果为1+1+1+2+2+3=10 答案不对啊.......~~ 注:我用的是C语言,编译器visual C++,结果如下
Pre any key to continue
如果是Java那么内部实现可能不一样 查了一下资料,java对于i++这一类的处理是不使用同一个暂存器,当前i值 结果为123557
------------23
for循环中i++与++i区别转载自:http://blog.csdn.net/zy1691/archive/2009/11/21/4849808.aspxfor(int i=0;i我们经常会使用这样的代码来做循环,一般在for循环中习惯于使用i++,......
C程序中的“i++与++i”毛圣治i++与++i 对很多初学C,C++ 的学生困惑。说来容易算来难。下面就个人对例题的理解,以MICROSOFT VC6.0及Turbo C2.0 调试通过的结果做一个小结。1、......
使用全站仪进行三角高程测量的精度也就能达到四等水准测量的精度,但必须采用直返觇法,也即称为对向观测法:分别在两点上架设仪器和棱镜,读取多个测回的斜距和垂直角,来计算获得往......
《左与右》教案作为一名教职工,就有可能用到教案,教案有助于学生理解并掌握系统的知识。教案应该怎么写呢?下面是小编为大家收集的《左与右》教案,希望能够帮助到大家。《左与右......
左尊与右尊口甄强在礼仪活动中,我们常常会碰到“左尊”与“右尊”的问题。那么,到底什么时候“以左为尊”,什么时候“以右为尊”呢?在这里,笔者不揣浅陋,试对“左尊”与“右尊”的......
