|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 我预期的结果是30 ,为什么程序运行的结果是25?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
2537
人关注过本帖
标题:
我预期的结果是30 ,为什么程序运行的结果是25?
只看楼主
加入收藏
prankmoon
等 级:
蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
第
31
楼
收藏
得分:0
以下是引用
ic06123
在2009-9-5 10:44的发言:
我是说为什么在相乘的时候从eax和ecx中取值。。。。++a和--a这两个表达式的值就存在这两个寄存器呀。。。O(∩_∩)O~
这个估计得问编译器的实现者了,我也无法回答为什么不直接从寄存器取而是反复从内存取。
2009-09-05 11:57
举报帖子
使用道具
赠送鲜花
大爱无言FF
等 级:
新手上路
帖 子:9
专家分:0
注 册:2009-9-4
第
32
楼
收藏
得分:0
回复 10楼 皇后
高人能否解释为啥是25啊?
2009-09-05 17:40
举报帖子
使用道具
赠送鲜花
shiying
等 级:
论坛游民
帖 子:11
专家分:17
注 册:2009-6-4
第
33
楼
收藏
得分:0
我用MyEclipse 7.0 运行结果是30,的确,自增,自减的运算级高于乘除,++a 得到a的值为6,--a得到a的值为5 因此值为30;楼上有人说的不对,--a后的a不会影响++a的结果!
2009-09-05 19:36
举报帖子
使用道具
赠送鲜花
shiying
等 级:
论坛游民
帖 子:11
专家分:17
注 册:2009-6-4
第
34
楼
收藏
得分:0
我又用了VS2005,结果是25,两个平台有差异:
java code :
class a
{
public static void main(String[] args)
{
int i=5,j=5,m,n;
m=(i++)+(i++)+(i++);
n=(++j)+(++j)+(++j);
System.out.println("m= "+m+" n= "+n);
}
}
结果:m= 18 n= 21
(jdk 1.5)
cpp code :
#include<stdio.h>
void main(){
int m=5,j=5,p,q;
p=(m++)+(m++)+(m++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d\n",p,q,m,j);
}
结果:15,22,8,8
(vc++5.0)
2009-09-05 19:49
举报帖子
使用道具
赠送鲜花
无敌小哈哈哈
等 级:
新手上路
帖 子:6
专家分:3
注 册:2009-3-17
第
35
楼
收藏
得分:0
这个结果应该是25的,不知道就上机运行哈吧!
2009-09-05 20:42
举报帖子
使用道具
赠送鲜花
yuehai1117
等 级:
论坛游民
帖 子:8
专家分:16
注 册:2009-9-4
第
36
楼
收藏
得分:0
这问题上机调试一下就好了,大家都忽略了一点,不管是a,++a,--a,都占用同一空间。
定义时a=5,
a++ 此时a=6;
然后 a--
此时a=5;
而a++
a--还有a是同一空间,所以最终结果三个值都是5;
所以最终结果是25。同样把上面题稍微改一下就知道了
int main()
{
int a=5,b;
b=++a*a;
printf("b=%d\n",b);
return 0;
}
结果很明显是36
int main()
{
int a=5,b;
b=a*--a;
printf("b=%d\n",b);
return 0;
}
结果是16
很明显了吧。
2009-09-05 22:03
举报帖子
使用道具
赠送鲜花
prankmoon
等 级:
蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
第
37
楼
收藏
得分:0
以下是引用
shiying
在2009-9-5 19:36的发言:
我用MyEclipse 7.0 运行结果是30,的确,自增,自减的运算级高于乘除,++a 得到a的值为6,--a得到a的值为5 因此值为30;楼上有人说的不对,--a后的a不会影响++a的结果!
你这个30用的是java? C编译器不应该是30,应该是25。
2009-09-06 00:06
举报帖子
使用道具
赠送鲜花
保守
等 级:
新手上路
帖 子:5
专家分:4
注 册:2009-9-6
第
38
楼
收藏
得分:0
感觉不到,应该是20吧!!
先算--a
在算++a
在*.
2009-09-06 11:23
举报帖子
使用道具
赠送鲜花
huangxiancon
等 级:
论坛游民
帖 子:7
专家分:33
注 册:2009-8-30
第
39
楼
收藏
得分:0
优先级++,--高于*
2009-09-06 12:31
举报帖子
使用道具
赠送鲜花
小勇不小1
等 级:
论坛游民
帖 子:17
专家分:16
注 册:2009-9-3
第
40
楼
收藏
得分:0
只有25楼有道理,
2009-09-06 14:07
举报帖子
使用道具
赠送鲜花
48
4/5页
1
2
3
4
5
快速回复:
我预期的结果是30 ,为什么程序运行的结果是25?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.033205 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved