鱼C论坛

 找回密码
 立即注册
查看: 1286|回复: 3

[已解决]i++,i--问题

[复制链接]
发表于 2018-11-10 14:09:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求大佬告知第二行输出是怎么回事= =
最佳答案
2018-11-10 16:28:12
本帖最后由 风扫地 于 2018-11-10 16:37 编辑

依赖于实现,一楼"人造人"提供了某一种情况下的具体实现,但实际上换个编译器可能又变了。
类似问题:
https://fishc.com.cn/thread-103186-1-1.html

在实际学习和工作中,应当禁止写这种代码。

考试了时候怎么办了?  看缘分吧。
QQ图片20181110140942.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-10 14:28:36 | 显示全部楼层
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int i = 1;
  5.         printf("%d\n", ++i);
  6.         i = 1;
  7.         printf("%d %d %d %d %d %d\n", ++i, --i, i++, i--, -i++, -i--);
  8.         return 0;
  9. }
复制代码

  1. 2
  2. 1 1 0 1 0 -1
  3. 请按任意键继续. . .
复制代码

  1. #include <stdio.h>

  2. int main(void)
  3. {
  4. 000717A0 55                   push        ebp  
  5. 000717A1 8B EC                mov         ebp,esp  
  6. 000717A3 81 EC DC 00 00 00    sub         esp,0DCh  
  7. 000717A9 53                   push        ebx  
  8. 000717AA 56                   push        esi  
  9. 000717AB 57                   push        edi  
  10. 000717AC 8D BD 24 FF FF FF    lea         edi,[ebp-0DCh]  
  11. 000717B2 B9 37 00 00 00       mov         ecx,37h  
  12. 000717B7 B8 CC CC CC CC       mov         eax,0CCCCCCCCh  
  13. 000717BC F3 AB                rep stos    dword ptr es:[edi]  
  14.         int i = 1;
  15. 000717BE C7 45 F8 01 00 00 00 mov         dword ptr [i],1  
  16.         printf("%d\n", ++i);
  17. 000717C5 8B 45 F8             mov         eax,dword ptr [i]  
  18. 000717C8 83 C0 01             add         eax,1  
  19. 000717CB 89 45 F8             mov         dword ptr [i],eax  
  20. 000717CE 8B 4D F8             mov         ecx,dword ptr [i]  
  21. 000717D1 51                   push        ecx  
  22. 000717D2 68 30 7B 07 00       push        offset string "%d\n" (077B30h)  
  23. 000717D7 E8 4E FB FF FF       call        _printf (07132Ah)  
  24. 000717DC 83 C4 08             add         esp,8  
  25.         i = 1;
  26. 000717DF C7 45 F8 01 00 00 00 mov         dword ptr [i],1  
  27.         printf("%d %d %d %d %d %d\n", ++i, --i, i++, i--, -i++, -i--);
  28. 000717E6 8B 45 F8             mov         eax,dword ptr [i]  
  29. 000717E9 F7 D8                neg         eax  
  30. 000717EB 89 85 30 FF FF FF    mov         dword ptr [ebp-0D0h],eax  
  31. 000717F1 8B 4D F8             mov         ecx,dword ptr [i]  
  32. 000717F4 83 E9 01             sub         ecx,1  
  33. 000717F7 89 4D F8             mov         dword ptr [i],ecx  
  34. 000717FA 8B 55 F8             mov         edx,dword ptr [i]  
  35. 000717FD F7 DA                neg         edx  
  36. 000717FF 89 95 2C FF FF FF    mov         dword ptr [ebp-0D4h],edx  
  37. 00071805 8B 45 F8             mov         eax,dword ptr [i]  
  38. 00071808 83 C0 01             add         eax,1  
  39. 0007180B 89 45 F8             mov         dword ptr [i],eax  
  40. 0007180E 8B 4D F8             mov         ecx,dword ptr [i]  
  41. 00071811 89 8D 28 FF FF FF    mov         dword ptr [ebp-0D8h],ecx  
  42. 00071817 8B 55 F8             mov         edx,dword ptr [i]  
  43. 0007181A 83 EA 01             sub         edx,1  
  44. 0007181D 89 55 F8             mov         dword ptr [i],edx  
  45. 00071820 8B 45 F8             mov         eax,dword ptr [i]  
  46. 00071823 89 85 24 FF FF FF    mov         dword ptr [ebp-0DCh],eax  
  47. 00071829 8B 4D F8             mov         ecx,dword ptr [i]  
  48. 0007182C 83 C1 01             add         ecx,1  
  49. 0007182F 89 4D F8             mov         dword ptr [i],ecx  
  50. 00071832 8B 55 F8             mov         edx,dword ptr [i]  
  51. 00071835 83 EA 01             sub         edx,1  
  52. 00071838 89 55 F8             mov         dword ptr [i],edx  
  53. 0007183B 8B 45 F8             mov         eax,dword ptr [i]  
  54. 0007183E 83 C0 01             add         eax,1  
  55. 00071841 89 45 F8             mov         dword ptr [i],eax  
  56. 00071844 8B 8D 30 FF FF FF    mov         ecx,dword ptr [ebp-0D0h]  
  57. 0007184A 51                   push        ecx  
  58. 0007184B 8B 95 2C FF FF FF    mov         edx,dword ptr [ebp-0D4h]  
  59. 00071851 52                   push        edx  
  60. 00071852 8B 85 28 FF FF FF    mov         eax,dword ptr [ebp-0D8h]  
  61. 00071858 50                   push        eax  
  62. 00071859 8B 8D 24 FF FF FF    mov         ecx,dword ptr [ebp-0DCh]  
  63. 0007185F 51                   push        ecx  
  64. 00071860 8B 55 F8             mov         edx,dword ptr [i]  
  65. 00071863 52                   push        edx  
  66. 00071864 8B 45 F8             mov         eax,dword ptr [i]  
  67. 00071867 50                   push        eax  
  68. 00071868 68 34 7B 07 00       push        offset string "%d %d %d %d %d %d\n" (077B34h)  
  69. 0007186D E8 B8 FA FF FF       call        _printf (07132Ah)  
  70. 00071872 83 C4 1C             add         esp,1Ch  
  71.         return 0;
  72. 00071875 33 C0                xor         eax,eax  
  73. }
  74. 00071877 5F                   pop         edi  
  75. 00071878 5E                   pop         esi  
  76. 00071879 5B                   pop         ebx  
  77. 0007187A 81 C4 DC 00 00 00    add         esp,0DCh  
  78. }
  79. 00071880 3B EC                cmp         ebp,esp  
  80. 00071882 E8 9B F8 FF FF       call        __RTC_CheckEsp (071122h)  
  81. 00071887 8B E5                mov         esp,ebp  
  82. 00071889 5D                   pop         ebp  
  83. 0007188A C3                   ret  
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-10 15:16:24 | 显示全部楼层
++i 与 i++ 的区别
++i  : 先加再算 (先自增再运算)
i++  : 先算再加  (先运算再自增)

i-- --i 同理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-10 16:28:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风扫地 于 2018-11-10 16:37 编辑

依赖于实现,一楼"人造人"提供了某一种情况下的具体实现,但实际上换个编译器可能又变了。
类似问题:
https://fishc.com.cn/thread-103186-1-1.html

在实际学习和工作中,应当禁止写这种代码。

考试了时候怎么办了?  看缘分吧。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
人造人 + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 19:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表