| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1711 人关注过本帖
标题:求教这个程序的结果
只看楼主 加入收藏
heqinwu8
Rank: 2
来 自:黄土高坡
等 级:论坛游民
帖 子:65
专家分:58
注 册:2009-7-11
收藏
得分:0 
我来分解下啦,嘿嘿
a++*a=9;  //这里a在全部的运算还没结束,不能自增
加b=12;  //这里是运算从左至右,所以先+b才运算后面的乘法,如果是另外的,看注1
c*a*++b/4=5*3*4/4=15;   //这里b在运算前先自增
加起来就是27啦。
注1:
a++*a+(b+c*a*++b/4)就等于28,因为有括号,所以算括号里的,b先自增得4,
c*a*++b=60;
60/4=15;
15+b=19;
19+a++*a=28;
这时a才自增得a=4。

戒烟真难啊,去楼顶抽个,没人发现
2010-05-08 01:47
mjw1124
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:48
专家分:48
注 册:2010-4-17
收藏
得分:0 
这是一个运算优先级的问题,应该是从右往左算,a++后是4然后依次向左算,到第二个b时我不知道是3还是4了,若是3,结果是30.若是4,结果是31.
2010-05-08 08:09
stonechen
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2010-4-21
收藏
得分:0 
好不明确呀
2010-05-08 09:32
xiaomanaruto
Rank: 6Rank: 6
等 级:侠之大者
帖 子:79
专家分:443
注 册:2010-4-1
收藏
得分:0 
main( )

{ int a=3.b=3,c=5,j ;

     printf ( j=%d \n , j=a++ * a+b+c*a*++b/4);

}
应该是35吧,a++是先用a本身的值然后加1,++b是先加1在调用,你在理解一下
2010-05-08 12:53
qbear
Rank: 2
等 级:论坛游民
帖 子:9
专家分:17
注 册:2010-4-7
收藏
得分:0 
这个应该和编译器求解表达式的顺序有关吧?结果应该是因编译器而异的

另外printf ( j=%d \n , j=a++ * a+b+c*a*++b/4);
这个表达式确实很不明确,让人不知道作者到底想得到什么
仅按作者的写法,可以这样看(a++)*a +b+ (c*a*(++b))/4,三部分相加
这时,不同的编译器可能有不同的求解顺序,比如说:一种顺序是三部分同时求解,再相加,就会得到9+3+15=27
也可能从左到右,依次对三部分求解,就会得到9+3+20=32
也可能还有其它顺序,我以上只是举两个例子


2010-05-08 13:28
longyi3030
Rank: 2
等 级:论坛游民
帖 子:36
专家分:38
注 册:2010-3-5
收藏
得分:0 
15楼正解,这个确实和编译器有关,在回答的注明编译环境

初学者,
2010-05-08 15:16
alweeq86
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2008-9-14
收藏
得分:0 
程序代码:
int main( )

{ int a=3,b=3,c=5,j;

     printf("j=%d\n",j=a++ * a+b+c*a*++b/4);

}
            j=3*3+4+5*3*4/4=28
2010-05-08 21:56
傲剑
Rank: 2
等 级:论坛游民
帖 子:51
专家分:28
注 册:2009-11-2
收藏
得分:0 
这样的表达式移植性很差,一般避免这样写,a++有副作用并且自加执行的时间在不同的环境下也不同
2010-05-08 22:08
sxg19821212
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-09 11:37
heqinwu8
Rank: 2
来 自:黄土高坡
等 级:论坛游民
帖 子:65
专家分:58
注 册:2009-7-11
收藏
得分:0 
a++*a+b+c*a*++b/4=27,//1
a*a+b+c*a*++b/4=27,  //2
3*a+b+c*a*++b/4=27,  //3
3*3+b+c*a*++b/4=28,  //4
b+c*a*++b/4+a++*a=28。 //5
前三个结果一样,
第4个却不一样,同样的值为啥不一样呢,有可能是变量存储在地址里,常量直接获取,编译的时候是先把地址里的值进行运算,然后才运算常量,这个说法还是不太行,不知道高手们对以上的表达式还有其他的见解没

戒烟真难啊,去楼顶抽个,没人发现
2010-05-09 20:05
快速回复:求教这个程序的结果
数据加载中...
 
   



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

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