社区
C语言
帖子详情
(++x)+(++x)+(++x)
qixiawoshishui
2009-10-29 10:34:11
x初值为5然而(++x)+(++x)+(++x)值为22为什么???
...全文
192
8
打赏
收藏
(++x)+(++x)+(++x)
x初值为5然而(++x)+(++x)+(++x)值为22为什么???
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
asimay
2009-10-30
打赏
举报
回复
这种题编译应该是不确定行为的warning。
qixiawoshishui
2009-10-30
打赏
举报
回复
一位高手提供给的
各个编译器下自加运算的不同结果
题目:X=5 (++X)+(++X)+(++X)的结果
TC2.0以及VS C# .net2.0
运算结果为 21
这个和我们很容易想到 运算过程是 6+7+8
第一步X先自加 为6
第二步X自加为7 与前一个6相加得 13
第三步X自加为8 与13相加为21
VS2005 C++
运算结果是 24
运算过程是:
第一步 X自加一次 为6
第二步 X再自加一次为7
第三步 X再自己为8
最后三个8相加为24
这里括号中的自加运算符优先级更高 先运算 随后再参加相加运算
VC6下
运算结果为22
运算过程看以下反汇编代码: x用[x]表示]
00401036 mov eax,[x]
00401039 add eax,1
0040103C mov [a],eax;完成第一个++x,此时x=6
0040103F mov ecx,[x]
00401042 add ecx,1
00401045 mov [x],ecx;完成第二个++x,此时x=7
00401048 mov edx,[x]
0040104B add edx,[x];完成(++x)+(++x),此时结果是7+7=14
0040104E mov eax,[x]
00401051 add eax,1
00401054 mov [x],eax;完成第三个++x,此时x=4
00401057 add edx,[x];完成[(++x)+(++x)]+(++x),此时结果是14+8=22
0040105A mov [result],edx
所以你其实可以这样理解:
第一步 (++x)+(++x)这一步要完成2次++a后a=3,然后将结果相加7+7=14,第一步的结果是14
第二步 14+(++x)这一步先完成一次++x后a=8,然后预算14+8,得到最后结果22
所以总结得到++前置的运算优先级…局部…大于+,请注意那个局部
wightmight
2009-10-30
打赏
举报
回复
楼上说的似乎有点道理
booksoon
2009-10-30
打赏
举报
回复
别再折腾这样的问题啦~
特烦中国式的考试,一大串的+++++++,有意义吗?
真在程序中出现这样的写法,说明你的编程习惯差的很~~~
OneBleach
2009-10-30
打赏
举报
回复
依赖编译器实现
苍蝇①号
2009-10-30
打赏
举报
回复
这样的情况只有在中国式的考试中会出现,现实中要是你写出这样的代码的话老板会炒你鱿鱼
mstlq
2009-10-29
打赏
举报
回复
请自行查看反汇编代码……
另外,此问题结果依赖编译器实现,深究无益……
slowgrace
2009-10-29
打赏
举报
回复
++++++++
libstdc
++
.so.6.0.13 (x64)
切换到根用户下 mv libstdc
++
.so.6.0.13 /usr/lib64/ ln -s libstdc
++
.so.6.0.13 libstdc
++
.so.6
Visual+Assist +10.9 2010-2017均可用
Visual+Assist+X+vs各版本均可以使用。具体可查看博客内容编程工具类教程。
yalmip 工具包
F=F+set([1 1 1 1 1]*x')+set([1 2 2 1 6]*x')+set(2*x(1)+x(2)+6*x(3)); F=F+set(x(3)+x(4)+5*x(5));solvesdp(F,-f) double(f) 80199 double(x) 53 99 99 99 0 intvar(m,n):生成整数型变量; sdpvar(m,n...
CnCommv1.5源码、范例及文档
C
++
BUILDER 4, 5, 6, X; EVC 4(sp4); G
++
3, 4; Intel C
++
7, 8, 9; VC
++
6(sp6), .NET, 2003, 2005; 作者: llbird 邮箱: wushaojian@21cn.com 博客: ...
64位Win7环境中PHP安装文件【Apache+PHP+MySQL】
安装文件: httpd-2.2.19-win64.rar mysql-5.5.33-winx64.msi php-5.3.6-Win32-VC9-x64.zip 详细安装步骤请参阅本人博客: http://blog.csdn.net/yousuosi/article/details/9859507
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章