QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 729|回复: 11

请教一道编程题?

[复制链接]
发表于 2004-12-2 20:37:06 | 显示全部楼层 |阅读模式
int a=5,k;
k=(a++)+(++a)+(a++);
为什么最后k=18,a=8
发表于 2004-12-2 21:18:31 | 显示全部楼层
何必玩弄这种东西。。。别人看不懂 自己也看不懂
回复

使用道具 举报

 楼主| 发表于 2004-12-2 23:25:53 | 显示全部楼层
我也不想呀,考试就考这个我也没有办法,在tc,vc上结果都是k=18,a=8,
#include<stdio.h>
main()
{
int a=5,k;
k=(a++)+(++a)+(a++);
printf("%d%d",k,a);
}
回复

使用道具 举报

 楼主| 发表于 2004-12-2 23:30:34 | 显示全部楼层
为什么不要玩弄这个,既然不知道为什么就说明对c的细节还不够了解,就应该把这个问题搞懂
回复

使用道具 举报

发表于 2004-12-3 00:11:59 | 显示全部楼层
回复

使用道具 举报

发表于 2004-12-3 11:10:25 | 显示全部楼层
原来我以前也没搞清楚啊,
关键是a++是在一个语句结束后才做+1的
回复

使用道具 举报

发表于 2004-12-3 11:27:22 | 显示全部楼层
首先,要知道a++和++a的区别
a++是a先参加运算再自加
++a是a先自加再参加运算
其次,要知道加法的结合性,是从左到右
回复

使用道具 举报

发表于 2004-12-3 11:34:55 | 显示全部楼层
(a++) + (++a) + (a++)
a=5;
1. sum1(a++) = 5 ( a=5);
2. sum2(++a) = 6 ( a=6);
3. sum3(sum1+sum2) = 11 (a=7);
4. sum4(a++) = 7 (a=7);
5  sum(sum3 + sum4) = 18  (a =8 ,);
回复

使用道具 举报

发表于 2004-12-3 11:42:18 | 显示全部楼层
第二步a=7
回复

使用道具 举报

发表于 2004-12-3 11:53:08 | 显示全部楼层
第二步如果等于7的话, sum2就是7了
回复

使用道具 举报

 楼主| 发表于 2004-12-3 12:39:36 | 显示全部楼层
我好像理解为公式先做++a,结果就是k=6+6+6,等k=(a++)+(++a)+(a++); 做完后在把a加两个一
回复

使用道具 举报

发表于 2004-12-3 13:04:30 | 显示全部楼层
[quote:f0d4c53de7="w2w2k2k2"]原来我以前也没搞清楚啊,
关键是a++是在一个语句结束后才做+1的[/quote]
[quote:f0d4c53de7="yunfan"](a++) + (++a) + (a++)
a=5;
1. sum1(a++) = 5 ( a=5);
2. sum2(++a) = 6 ( a=6);
3. sum3(sum1+sum2) = 11 (a=7);
4. sum4(a++) = 7 (a=7);
5  sum(sum3 + sum4) = 18  (a =8 ,);[/quote]这样就好理解了。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-6 23:26 , Processed in 0.096908 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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