|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- int main()
- {
- int x=5;//在我的编译器上得到的结果6 5
- printf("%d\n%d\n",x,x++);
-
- x=5;//在我的编译器上得到的结果6 6
- printf("\n%d\n%d\n",x,++x);
-
- x=5;//在我的编译器上得到的结果5 6
- printf("\n%d\n%d\n",x++,x);
-
- x=5;//在我的编译器上得到的结果6 6
- printf("\n%d\n%d\n",++x,x);
-
- x=5;//在我的编译器上得到的结果5 5
- printf("\n%d\n%d\n",++x,--x);
-
- x=5;//在我的编译器上得到的结果5 5
- printf("\n%d\n%d\n",--x,++x);
-
- x=5;//在我的编译器上得到的结果4 5
- printf("\n%d\n%d\n",x++,x--);
-
- x=5;//在我的编译器上得到的结果6 5
- printf("\n%d\n%d\n",x--,x++);
- getchar();
- return 0;
- }
复制代码
第一个X 为什么是6
第三个X++为什么是5
本帖最后由 Croper 于 2019-3-25 17:34 编辑
这个问题已经是周经问题了。。。。
再说一下,关于在同一个表达式\函数参数中连续使用++或--,这种用法最终结果是编译器相关的,
不规范而且没有讨论的意义(在C语言的角度而言);
如果一定要弄懂请反汇编
你的代码太长,举个短点的例子
- int i=0;
- printf("%d\ %d\ %d\ %d", ++i, --i, i++, i--);
- 00007FF67F481931 mov eax,dword ptr [i]
- 00007FF67F481934 mov dword ptr [rbp+0D4h],eax
- 00007FF67F48193A mov eax,dword ptr [i]
- 00007FF67F48193D dec eax
- 00007FF67F48193F mov dword ptr [i],eax
- 00007FF67F481942 mov eax,dword ptr [i]
- 00007FF67F481945 mov dword ptr [rbp+0D8h],eax
- 00007FF67F48194B mov eax,dword ptr [i]
- 00007FF67F48194E inc eax
- 00007FF67F481950 mov dword ptr [i],eax
- 00007FF67F481953 mov eax,dword ptr [i]
- 00007FF67F481956 dec eax
- 00007FF67F481958 mov dword ptr [i],eax
- 00007FF67F48195B mov eax,dword ptr [i]
- 00007FF67F48195E inc eax
- 00007FF67F481960 mov dword ptr [i],eax
- 00007FF67F481963 mov eax,dword ptr [rbp+0D4h]
- 00007FF67F481969 mov dword ptr [rsp+20h],eax
- 00007FF67F48196D mov r9d,dword ptr [rbp+0D8h]
- 00007FF67F481974 mov r8d,dword ptr [i]
- 00007FF67F481978 mov edx,dword ptr [i]
- 00007FF67F48197B lea rcx,[string "%d %d %d %d" (07FF67F489C28h)]
- 00007FF67F481982 call printf (07FF67F4811D6h)
复制代码
以上是在VS2017下反汇编的结果,
可以看到,后置++,--是储存在了临时变量ptr [rbp+0D8h],[rbp+0D4h]中,而前置++,--是直接使用的原变量,
所以最终的结果是0 0 -1 0;
而这个结果从C语言的角度怎么分析都是乱的
另外,看了下楼主之前发的主体贴,建议先学习Window程序设计,弄懂gdi已经能做很多漂亮的图形界面了,
然后可以学习directX或Opengl,一步一步来,不要好高骛远
另外,送楼主一句话:
思而不学则殆
|
评分
-
参与人数 1 | 荣誉 +2 |
鱼币 +3 |
贡献 +3 |
收起
理由
|
RIXO
| + 2 |
+ 3 |
+ 3 |
虽然大佬们觉得没啥意义,但我感觉对我这样. |
查看全部评分
|