C语言自加自减的问题

执行以下程序段后的输出结果是()。intx=3;intm,n;n=(++x)+(++x);m=(x--)+(x--);printf("%d%d\n",m,n);A、106... 执行以下程序段后的输出结果是( )。
int x = 3;
int m, n;
n = (++x) + (++x);
m = (x--) + (x--);
printf("%d %d\n", m, n);
A、10 6
B、9 9
C、10 10
D、10 8

答案是选C,我怎么算都是7,9,求高人指导啊
展开
 我来答
l109383670
2011-10-13 · TA获得超过419个赞
知道小有建树答主
回答量:222
采纳率:100%
帮助的人:213万
展开全部
他这个是X变量的存储问题。先看
n = (++x)+(++x);
从右至左,先算++x,x=4,这里x在寄存器里的值是4,再算++x,x=5。
注意,关键点来了,那这时候,n是等于4+5吗,不是的。
在进行加法时,A+B,寄存器会在得到A,B的值以后才会开始加法计算,现在,A,B的地址都指向X,当最后x=5时,实际上把A的值也做了改变,变成了5,千万不要想当然认为有一个临时变量来保存开始x=4的值,没有的。所以结果自然是x+x = 10
同理到x--
TableDI
2024-07-18 广告
`VLOOKUP` 函数在 Excel 中通常是基于单个查找值在表的首列中进行查找,并返回相应行的某个单元格的值。但直接使用 `VLOOKUP` 来根据两个条件进行匹配是不可行的。然而,可以通过一些技巧来实现基于两个条件的查找,比如结合使用... 点击进入详情页
本回答由TableDI提供
tattackor
2015-10-31 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:857万
展开全部
1、C语言中,后置自增(自减)是在执行完所在语句后,变量的值再自增(自减)。
2、举例说明如下:
int num=0, s=0;
while(num++<3)
{
s = s + num;
}
// 第1次执行while时,num=0,第1次执行完while后,num=1,此时,s=0+1=1
// 第2次执行while时,num=1,第2次执行完while后,num=2,此时,s=1+2=3
// 第3次执行while时,num=2,第3次执行完while后,num=3,此时,s=3+3=6
// 第4次执行while时,由于num=4>3,所以推出循环,最后s=6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dcmotivate
2011-10-13 · 超过10用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:23.5万
展开全部
你要知道“++”,“--”在变量前后的区别。
在前,比如“++x",是先将自增,再赋值,那么n = (++x)+(++x)就是4+5 = 9
然后,“x--"就是先赋值再自减,那么刚刚经过n = (++x)+(++x)后,x=5,带入m=(x--)+(x--)还是等于9。
我觉得答案错了,不要迷信答案,你自己到VC或者Turbo C上跑一下不就解决了。
追问
这是道竞赛题,编译环境是在TC1.9,我跑过了,答案就是10,10的,郁闷了啊
追答
我在MS C下跑了,也是10,10,我知道原因了。
我的教材上有一章就是讲这个原理的,和编译器有关:
m = (++i)+(++i);先将i自增两次,然后才计算表达式(5+5);
n = (i--)+(i--);用i的原值先运算(5+5),再自减两次;

不信,你把我的代码去跑一次
int x = 3;
int m(0),n(0);
m = (++x)+(++x);
printf("x = %d\n",x);
n = (x--)+(x--);
printf("x = %d\n",x);
printf("m=%d,n=%d\n",m,n);
应该是
x = 5;
x = 3;
m = 10,n = 10
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhang_xue_jian
2011-10-13
知道答主
回答量:22
采纳率:0%
帮助的人:14.6万
展开全部
因为++x是先把x自加1,然后再运算。第一次++x,x=4,第二次++x,x=5;然后n=x+x,n=5+5;
因为x--是先运算再自减1,所以m=5+5;m=10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式