| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1619 人关注过本帖
标题:各位好心的大哥大姐大叔大婶来救救新手啊!这里该怎么解释啊!详细说明一下 ...
只看楼主 加入收藏
gao2951713
Rank: 2
等 级:论坛游民
帖 子:23
专家分:36
注 册:2009-12-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:16 
各位好心的大哥大姐大叔大婶来救救新手啊!这里该怎么解释啊!详细说明一下!
执行下列程序的输出结果是()。
main( )
{
int x=5,y;
y=++x*++x;
printf('y=%d\\n',y);
}
         49
y的值为何是49?帮忙详细讲解一下!拜托了!!!
搜索更多相关主题的帖子: 好心 详细说明 大姐 大叔 
2010-01-06 18:28
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:0 
我的理解是
++(x*++x)=++(6*6)=37
我不理解期待··解答·
2010-01-06 18:59
段梦超
Rank: 2
等 级:论坛游民
帖 子:21
专家分:10
注 册:2009-12-20
收藏
得分:0 
我觉得 可能与运算符的优先级和运算方向有关。我也是新手 也不是很明白。
2010-01-06 19:07
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:0 
我错了···

[ 本帖最后由 jiangwu10057 于 2010-1-7 07:55 编辑 ]
2010-01-06 19:29
xu362726904
Rank: 6Rank: 6
等 级:侠之大者
帖 子:160
专家分:471
注 册:2009-6-18
收藏
得分:0 
等效于x++;x++;y=x*x;
2010-01-06 20:07
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
收藏
得分:0 
自加的优先级为2乘的优先级为3,所以就相当于先两个i++然后再i*i,结果49

www.
2010-01-06 20:14
浴雪希灵
Rank: 2
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-11-12
收藏
得分:0 
你想清楚的了解么,我自己的总结哈,你自个儿验证。表达式从左至右执行,结合性这里就没必要管啦
2010-01-06 20:16
浴雪希灵
Rank: 2
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-11-12
收藏
得分:10 
程序代码:
#include"stdio.h"
main( )
{
int x=1,y;
y=(++x)*(++x);
printf("y=%d\n",y);
}
这个程序执行到y的赋值表达式时,先把x自加到2,继续后面的第二个x自加到3,因为是同一个x,且在一个表达式中,所以值都是3,结果为9.
看下面的程序
程序代码:
#include"stdio.h"
main( )
{
int x=1,y;
y=(++x)*(++x)*(++x);
printf("y=%d\n",y);
}
这里的x变化,先是x自加到2,紧接着自加到3,好,关键位置:这里两个括号的值可以相乘了,而且前后都是一个变量x,即:(3*3)*(++x)那个3*3立即得9,即9*x;这里的x会自加到4.也就是说表达式自左至右执行,一旦可以得出结果立马就执行。
如此则有推论:你把你的表达式前面乘以2,后面再除以2,则结果会变成42。
程序代码:
#include"stdio.h"
main( )
{
int x=5,y;
y=2*(++x)*(++x)/2;
printf("y=%d\n",y);
}
懂了没?
2010-01-06 20:28
浴雪希灵
Rank: 2
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-11-12
收藏
得分:0 
最简单的概括就是表达式从左至右遇到最简表达式时就立即执行,再加上同一个表达式里的变量值是最后一个赋予它的值,因为前面的值被覆盖了。++x不是最简的,因为它还有自己运算,而x是最简的,它没有其他运算了。
2010-01-06 20:38
段梦超
Rank: 2
等 级:论坛游民
帖 子:21
专家分:10
注 册:2009-12-20
收藏
得分:5 
你的代码等同于
 # include <stdio.h>
 void main()
{
  int x,y;
  scanf("%d",&x);
  x=++x;
  x=++x;
  y=x*x;
  printf("%d",y);
}

2010-01-06 20:44
快速回复:各位好心的大哥大姐大叔大婶来救救新手啊!这里该怎么解释啊!详细说明 ...
数据加载中...
 
   



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

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