|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 一道c语言不会
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
517
人关注过本帖
标题:
一道c语言不会
只看楼主
加入收藏
wangxingang
等 级:
新手上路
帖 子:27
专家分:5
注 册:2008-10-31
结帖率:
0
楼主
收藏
已结贴
√
问题点数:10 回复次数:5
一道c语言不会
#include <stdio.h>
void main(void)
{
int i=5,j=5,p,q,a,b,c;
p=(i++)+(i++)+(++i);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d\n",p,q,i,j);
}
在VC++6.0环境下的结果是16,22,8,8
本人不明白这个结果22,我觉得应该是6+7+8为21
可是运行结果就是22
这是为什么呢?
哪位可以说明一下,谢谢
搜索更多相关主题的帖子:
c语言
2010-03-27 15:22
举报帖子
使用道具
赠送鲜花
hzh512
等 级:
蜘蛛侠
威 望:
6
帖 子:234
专家分:1333
注 册:2009-6-5
第
2
楼
收藏
得分:2
先贴出汇编代码:
.file
"1.c"
.text
.globl main
.type
main, @function
main:
leal
4(%esp), %ecx
andl
$-16, %esp
pushl
-4(%ecx)
pushl
%ebp
movl
%esp, %ebp
pushl
%ecx
subl
$16, %esp
movl
$5, -12(%ebp)//
-12(%ebp)就是j
addl
$1, -12(%ebp)
addl
$1, -12(%ebp)
movl
-12(%ebp), %eax
addl
%eax, %eax
addl
$1, -12(%ebp)
addl
-12(%ebp), %eax
movl
%eax, -8(%ebp)
movl
$0, %eax
addl
$16, %esp
popl
%ecx
popl
%ebp
leal
-4(%ecx), %esp
ret
.size
main, .-main
.ident
"GCC: (Debian 4.3.2-1.1) 4.3.2"
.section
.note.GNU-stack,"",@progbits
很明显,先算括号(++j)+(++j),因为括号优先级大,此时j=j+1+1=7;这时结果7+7=14
然后,14+8=22
编程=用几种语言在某个或几个平台上通过抽象思维运用一系列算法来解决现实中问题的手段
2010-03-27 15:47
举报帖子
使用道具
赠送鲜花
wangxingang
等 级:
新手上路
帖 子:27
专家分:5
注 册:2008-10-31
第
3
楼
收藏
得分:0
回复 2楼 hzh512
明白了,thank you
2010-03-27 16:05
举报帖子
使用道具
赠送鲜花
llooppzhang
来 自:江苏
等 级:
黑侠
威 望:
5
帖 子:308
专家分:518
注 册:2009-10-18
第
4
楼
收藏
得分:2
不懂
2010-03-28 12:59
举报帖子
使用道具
赠送鲜花
zhushilu
等 级:
新手上路
帖 子:19
专家分:3
注 册:2010-3-27
第
5
楼
收藏
得分:2
这些已经忘得差不多了
2010-03-28 15:20
举报帖子
使用道具
赠送鲜花
雪鹰独行
等 级:
论坛游民
帖 子:40
专家分:10
注 册:2009-7-18
第
6
楼
收藏
得分:2
也学习了
2010-03-28 15:41
举报帖子
使用道具
赠送鲜花
6
1/1页
1
快速回复:
一道c语言不会
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.032340 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved