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

从增运算符笔试题

2013-04-26 
自增运算符笔试题int i3k(++i)+(++i)+(i++)求k,i的值int i3k(++i)+(++i)+(++i)求k,i的值int i3k

自增运算符笔试题
int i=3;k=(++i)+(++i)+(i++);求k,i的值
int i=3;k=(++i)+(++i)+(++i);求k,i的值
int i=3;k=(i++)+(i++)+(i++);求k,i的值

百度出来的答案
int i=3;k=(++i)+(++i)+(i++);
k=15,i=6;
int i=3;k=(++i)+(++i)+(++i);
k=18,i=6
int i=3;k=(i++)+(i++)+(i++);
k=9,i=6
理解为一条语句中执行完所有的++i ,再进行语句的计算。但VC6中运行出来的确实这个答案
从增运算符笔试题

附上测试代码
int i=3;
int k ;
k = (++i)+(++i)+(i++);
printf("k = %d , i = %d \n",k,i);

i=3;
k=(++i)+(++i)+(++i);
printf(" k = %d , i = %d \n",k,i);

i=3;
k=(i++)+(i++)+(i++);
printf(" k = %d , i = %d \n",k,i); 笔试
[解决办法]

引用:
引用:int i=3;k=(++i)+(++i)+(++i);

++i;
++i;
t=i+i;
++i;
k=t+i;错

調試後是18
int i=3, k=(++i)+(++i)+(++i);
013913EE  mov         dword ptr [i],3  
013913F5  mov         eax,dword ptr [i]  
013913F8  add         eax,1  
013913FB  mov         dword ptr [i],eax  
013913FE  mov         ecx,dword ptr [i]  
01391401  add         ecx,1  
01391404  mov         dword ptr [i],ecx  
01391407  mov         edx,dword ptr [i]  
0139140A  add         edx,1  
0139140D  mov         dword ptr [i],edx  
01391410  mov         eax,dword ptr [i]  
01391413  add         eax,dword ptr [i]  
01391416  add         eax,dword ptr [i]  
01391419  mov         dword ptr [k],eax
不是我想的那樣, 是先執行所有的++i先...

热点排行