标题:[求助]c=a+b--的计算过程
只看楼主
mahayu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:160
注 册:2007-8-3
 问题点数:0 回复次数:6 
[求助]c=a+b--的计算过程
设int a,b,c;执行表达式a=b=1,a++,b=b+1,c=a+b--后,a,b和c的值分别是 ( A ) (选择一项)
A.2,1,4 B.2,0,3
C.2,2,3 D.2,1,3

提问:这题的解为何不是C而是A,我对c=a+b--这步不理解,编译程序如下:
#include<stdio.h>
void main()
{
int a,b,c;
a=b=1;
a++; //得出a=2
b=b+1; //得出b=2
c=a+b--; //?
printf("%d,%d,%d\n",a,b,c);
}

输出为:2,1,4
请教高手:c=a+b--这步的详细计算步骤和结果

搜索更多相关主题的帖子: int void 
2007-08-14 14:36
红专三少
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2007-7-14
得分:0 
--应该是运算过后再让b的值自减1吧.
2007-08-14 17:26
exqus
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-7-16
得分:0 
C没学好啊
看看b--与--b的区别吧
2007-08-14 17:26
Lenying
Rank: 1
等 级:禁止访问
帖 子:16
专家分:5
注 册:2006-11-25
得分:0 
按照优先级 c=a+b-- 等同于 c=a+(b--)。
之前a=2,b=2。
c=a+(b--)之后,a=2,b--=2,b=1
因此 c=a+(b=-)=2+2=4,而b=1。

蓝鹰----Lenying
2007-08-14 21:01
lijy520
Rank: 2
等 级:论坛游民
帖 子:119
专家分:42
注 册:2007-8-8
得分:0 

你可以编程序解决啊
a=--b <==> a=b-1,b=b-1 先自减再赋值
a=b-- <==> a=b,b=b-1 先赋值再自减



2007-08-14 21:43
不在犯罪现场
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-8-1
得分:0 

单独的b--和--b没什么区别。
但是如果是a=--b,是先把b自减1再赋值给a,计算过程是b=b-1,a=b;
a=b--,是先把b赋值给a再b自减1,计算过程是a=b,b=b-1.


2007-08-15 00:42
rediums
Rank: 2
等 级:新手上路
威 望:3
帖 子:367
专家分:0
注 册:2007-7-29
得分:0 
a=b=1,a++,b=b+1,c=a+b--
计算过程如下:
a=b=1,a++,b=b+1,这三个表达式不用说了,计算之后结果为a=2,b=2
然后计算c=a+b--,这个表达式的意思是先取得b的值,用这个值来计算表达式的值,也就是c=a+b=2+2=4,
最后计算b--,并把这个值赋值给b,也就是b=b--,所以b=1。

在一个表达式中,后缀的--或++表示先取变量的值,用这个值去计算表达式的值,然后再做变量的增减运算
前缀的--或++表示先做变量的增减运算,并用计算后得到的值去计算所在表达式的值

2007-08-15 23:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-162616-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.127876 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved