|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 小程序` 不明白
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1684
人关注过本帖
标题:
小程序` 不明白
只看楼主
加入收藏
cosdos
来 自:ShangHai
等 级:
蜘蛛侠
威 望:
6
帖 子:2109
专家分:1385
注 册:2007-6-19
第
11
楼
收藏
得分:0
2个程序应该完全一样,如果不一样那可能是编译器对代码优化上处理的不好。(关掉优化)
—>〉Sun〈<—
2007-11-25 09:40
举报帖子
使用道具
赠送鲜花
zglcx123
等 级:
论坛游民
帖 子:60
专家分:10
注 册:2007-7-2
第
12
楼
收藏
得分:0
++a
是先自加
a++
是后自加,,
单独用是一样的。
但
如:
b = a++;//是先把a的植传给 b ,才自加一
b = ++a;//是先自加一,,才传给b,,,,
是不一样的,
如果先 a = 3;...则
第一个b = 3,,第二个b = 4;
2007-11-25 10:03
举报帖子
使用道具
赠送鲜花
C语言的深度
来 自:卡特的怀抱
等 级:
版主
威 望:
1
帖 子:9577
专家分:19
注 册:2007-10-22
第
13
楼
收藏
得分:0
10L的
你要理解a++和++a的概念~~!两个性质是不一样的
4楼解释的很好`
用代码打出楼房...用编程编出幸福...
2007-11-25 10:05
举报帖子
使用道具
赠送鲜花
cosdos
来 自:ShangHai
等 级:
蜘蛛侠
威 望:
6
帖 子:2109
专家分:1385
注 册:2007-6-19
第
14
楼
收藏
得分:0
你们这些人都没看轻楼主的代码吗!
楼主的代码 a++;
和 ++a; 是单独的语句。
所以结果应该是一样的,如果不一样那就可能能编译器优化出了的问题。
—>〉Sun〈<—
2007-11-25 10:15
举报帖子
使用道具
赠送鲜花
cosdos
来 自:ShangHai
等 级:
蜘蛛侠
威 望:
6
帖 子:2109
专家分:1385
注 册:2007-6-19
第
15
楼
收藏
得分:0
printf("%d", ++a);
与 printf("%d", a++);
才不一样。
—>〉Sun〈<—
2007-11-25 10:16
举报帖子
使用道具
赠送鲜花
arrogone
来 自:uestc
等 级:
新手上路
帖 子:4
专家分:0
注 册:2007-11-25
第
16
楼
收藏
得分:0
回复 4# 的帖子
是的,自加存在一个进入CPU加法运算器先后的顺序,a++,和++a 进入的时间不一样
2007-11-25 10:17
举报帖子
使用道具
赠送鲜花
cosdos
来 自:ShangHai
等 级:
蜘蛛侠
威 望:
6
帖 子:2109
专家分:1385
注 册:2007-6-19
第
17
楼
收藏
得分:0
printf("%d", ++a);
与 printf("%d", a++);
才不一样。
/*****************/
a++;
printf("%d\n", a);
与
++a;
printf("%d\n", a);
结果应该是一样的。
a++ 与 ++a 是一个单独的语句,那么不过下加还是后加,到了下一条语句a的值都是 + 1。
/*
帖子不能编辑,所以发了N贴
*/
—>〉Sun〈<—
2007-11-25 10:20
举报帖子
使用道具
赠送鲜花
wubizao
来 自:荆州长大电信
等 级:
新手上路
帖 子:223
专家分:0
注 册:2006-6-24
第
18
楼
收藏
得分:0
对于第一次a=0,当然运行到下一行时,也就是printf("%d\n",a);然后
a=a+1;此时a=1;
对4楼的最不理解之处就在于上面这句话?!
在这个程序中a++;
++a;
都是单独成语句的
所以这个单独语句执行后,a都被加了1,并不是上面那句“也就是printf("%d\n",a);然后a=a+1;此时a=1;”
困惑中。。。。。。
在路上走,看见了C,从此爱上了她
2007-11-25 10:32
举报帖子
使用道具
赠送鲜花
but
等 级:
新手上路
帖 子:26
专家分:0
注 册:2007-10-27
第
19
楼
收藏
得分:0
你要是在printf("%d\n",a++);就是先输出A的值在执行A+=1;要是++A就是先执行A+=1;在输出值,但是要是不在输出语句中就想楼主那样,他们的结构都是要让A自加之后在输出结构。
2007-11-25 10:44
举报帖子
使用道具
赠送鲜花
wubizao
来 自:荆州长大电信
等 级:
新手上路
帖 子:223
专家分:0
注 册:2006-6-24
第
20
楼
收藏
得分:0
7:
i++;
00401036
mov
eax,dword ptr [ebp-4]
00401039
add
eax,1
0040103C
mov
dword ptr [ebp-4],eax
8:
++j;
0040103F
mov
ecx,dword ptr [ebp-8]
00401042
add
ecx,1
00401045
mov
dword ptr [ebp-8],ecx
i++;
++j;
单独成句,在反汇编中指令的循序是一样的
先是mov 寄存器,内存区
再是add 寄存器,1
然后mob 内存区,寄存器
......
在路上走,看见了C,从此爱上了她
2007-11-25 10:50
举报帖子
使用道具
赠送鲜花
23
2/3页
1
2
3
快速回复:
小程序` 不明白
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.022430 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved