| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2537 人关注过本帖
标题:我预期的结果是30 ,为什么程序运行的结果是25?
只看楼主 加入收藏
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分:0 
以下是引用ic06123在2009-9-5 10:44的发言:
我是说为什么在相乘的时候从eax和ecx中取值。。。。++a和--a这两个表达式的值就存在这两个寄存器呀。。。O(∩_∩)O~
这个估计得问编译器的实现者了,我也无法回答为什么不直接从寄存器取而是反复从内存取。
2009-09-05 11:57
大爱无言FF
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-9-4
收藏
得分:0 
回复 10楼 皇后
高人能否解释为啥是25啊?
2009-09-05 17:40
shiying
Rank: 2
等 级:论坛游民
帖 子:11
专家分:17
注 册:2009-6-4
收藏
得分:0 
我用MyEclipse 7.0 运行结果是30,的确,自增,自减的运算级高于乘除,++a 得到a的值为6,--a得到a的值为5 因此值为30;楼上有人说的不对,--a后的a不会影响++a的结果!
2009-09-05 19:36
shiying
Rank: 2
等 级:论坛游民
帖 子:11
专家分:17
注 册:2009-6-4
收藏
得分: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
无敌小哈哈哈
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2009-3-17
收藏
得分:0 
这个结果应该是25的,不知道就上机运行哈吧!
2009-09-05 20:42
yuehai1117
Rank: 2
等 级:论坛游民
帖 子:8
专家分:16
注 册:2009-9-4
收藏
得分: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
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分: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
保守
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2009-9-6
收藏
得分:0 
感觉不到,应该是20吧!!
先算--a
在算++a
在*.
2009-09-06 11:23
huangxiancon
Rank: 2
等 级:论坛游民
帖 子:7
专家分:33
注 册:2009-8-30
收藏
得分:0 
优先级++,--高于*
2009-09-06 12:31
小勇不小1
Rank: 2
等 级:论坛游民
帖 子:17
专家分:16
注 册:2009-9-3
收藏
得分:0 
只有25楼有道理,
2009-09-06 14:07
快速回复:我预期的结果是30 ,为什么程序运行的结果是25?
数据加载中...
 
   



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

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