- 主题:难题
请分析一下为什么是这样的结果。
i=3
k=(++i)+(++i)+(++i);
最后i=6,16
~
--
FROM 218.194.249.104
为什么k=16? 麻烦高人告知。
【 在 dgwang (DG大哥) 的大作中提到: 】
: 请分析一下为什么是这样的结果。
: i=3
: k=(++i)+(++i)+(++i);
: 最后i=6,16
: ~
--
FROM 218.194.249.104
i先增加1 两次 i=5
然后i+i 得10
然后i再增加1 i=6
然后i加上前面的和 10+6=16
【 在 dgwang (DG大哥) 的大作中提到: 】
: 为什么k=16? 麻烦高人告知。
: 【 在 dgwang (DG大哥) 的大作中提到: 】
: : 请分析一下为什么是这样的结果。
: : i=3
: : k=(++i)+(++i)+(++i);
: : 最后i=6,16
: : ~
--
FROM 211.155.251.247
+左结合在先,第二句话的实际编译过程是
tmp = (++i)+(++i);
k = tmp+(++i);
看看汇编代码就很清楚了。vc++调试显示汇编
unix下面只要gcc -c -g -Wa,-a,-ad就好了...
【 在 dgwang.bbs@ytht.net (DG大哥) 的大作中提到: 】
: 请分析一下为什么是这样的结果。
: i=3
: k=(++i)+(++i)+(++i);
: 最后i=6,16
: ~
--
赞
这种代码供了解学习某些东西可以
真正写代码这么写太不厚道了
【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: +左结合在先,第二句话的实际编译过程是
: tmp = (++i)+(++i);
: k = tmp+(++i);
: ...................
--
FROM 166.111.154.35
关键问题是k=(++i)+(++i)
的时候,i不是4+5
而是5+5(i自爱同一时间只能有一个值)
楼主明白呼?
【 在 dgwang.bbs@ytht.net (DG大哥) 的大作中提到: 】
: 请分析一下为什么是这样的结果。
: i=3
: k=(++i)+(++i)+(++i);
: 最后i=6,16
: ~
--
FROM 202.118.17.40
如果真正写代码这么写
一定晦涩难懂,无法维护
纯粹是技术炫耀了
【 在 windtear@smth.org-SPAM.no (我要租建国门的房 租房 租房 的大作中提到: 】
: 赞
: 这种代码供了解学习某些东西可以
: 真正写代码这么写太不厚道了
: 【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: : +左结合在先,第二句话的实际编译过程是
: : tmp = (++i)+(++i);
: : k = tmp+(++i);
: : ...................
--
FROM 219.216.80.241
这个不符合标准.不同编译器有不同结果.
不用在这个问题上纠缠.
【 在 dgwang.bbs@ytht.net (DG大哥) 的大作中提到: 】
: 请分析一下为什么是这样的结果。
: i=3
: k=(++i)+(++i)+(++i);
: 最后i=6,16
: ~
--
FROM 155.69.144.*
编译器相关
《实用 C 语言编程》
两条足够:
* 乘法和除法优先于加法和减法
* 在所有该加括号的地方都加上括号
【 在 dgwang.bbs@ytht.net (DG大哥) 的大作中提到: 】
: 请分析一下为什么是这样的结果。
: i=3
: k=(++i)+(++i)+(++i);
: ...................
--
FROM 211.68.11.*