首页
社区
课程
招聘
C语言的疑惑
发表于: 2006-3-3 17:24 5511

C语言的疑惑

2006-3-3 17:24
5511
#include <stdio.h>
int main(void)
{
int b=5;
printf("(b=(b--)+3)=%d\n",b=(b--)+3);
}
运行后b=(b--)+3)=8

我怎么也想不通,为什么等于8,应该等于7才对,请各位大侠赐教!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
书上有对于++ --在变量前后的区别,仔细看看
2006-3-3 17:28
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
3
执行顺序:
1、b = 5
2、b = b + 3 = 8
3、printf ==> 8
4、b = (b--) = 7 ;
2006-3-3 18:04
0
雪    币: 615
活跃值: (1267)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
B+3=8 ,然后减1等于7才对
结果却不是,难道我错了?
2006-3-3 18:08
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
5
最初由 xzchina 发布
B+3=8 ,然后减1等于7才对
结果却不是,难道我错了?


你再仔细看下我上面执行顺序吧,第三步输出8,
--是在输出后才执行的
2006-3-3 18:17
0
雪    币: 615
活跃值: (1267)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
最初由 北极星2003 发布
执行顺序:
1、b = 5
2、b = b + 3 = 8
3、printf ==> 8
4、b = (b--) = 7 ;


下午计算机老师就是这么讲的等于7,我上机的时候显示的是8接着就下课
终于明白了!
我把顺序搞错 多谢北极星2003 !
2006-3-3 18:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
将--改成前置。。。。。。
2006-3-3 22:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
关键在b-- 上,如果是--b ,结果等于7。
b--是先用不的原值,然后在在b的基础上减1,所以是b先等于5,使用了后才变成4,所以结果是8。
2006-8-10 17:41
0
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
9
恩,看明白了
--b,先自减再参与运算
b--,表达式运算完后在自减
2006-8-10 18:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
。。。。。。。。。。
2006-8-11 10:05
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最初由 yunhai 发布
。。。。。。。。。。

恶意灌水?
2006-8-11 10:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
先利用B员工,利用完之后再减薪。这就是游戏规则。
2006-8-11 11:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
#include <stdio.h>
int main(void)
{
   int b=5;
   printf("b=%d\n",b);
   printf("(b=(b--)+3)=%d\n b=%d\n",(b--)+3,b);
   printf("b=%d\n",b);
}

比较一下!!!
2006-8-14 15:11
0
雪    币: 216
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
最初由 六月飞霜 发布
先利用B员工,利用完之后再减薪。这就是游戏规则。

站在剥削者的角度,难道你是...?
2006-8-14 17:53
0
游客
登录 | 注册 方可回帖
返回
//