| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 706 人关注过本帖
标题:为什么这道题不是586?
只看楼主 加入收藏
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
结帖率:96.77%
收藏
已结贴  问题点数:10 回复次数:6 
为什么这道题不是586?
设X,Y为int型变量,则执行下列语句后,Y的值是()
X=5;
Y=X++*X++
Y=--Y*--Y
A、529
B、2401
C、1209
D、625

这是道广西区二级考试的试题

[ 本帖最后由 自强 于 2011-10-17 18:34 编辑 ]
2011-10-17 12:31
smallmoon521
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:517
专家分:1373
注 册:2008-4-21
收藏
得分:1 
这种未定义行为真的没有意义,同学,劝你还是不要在这上面纠结了

为游戏狂~~!!    大家努力编哈!
2011-10-17 12:37
竹闲云
Rank: 2
等 级:论坛游民
帖 子:39
专家分:34
注 册:2011-10-9
收藏
得分:1 
这种题 你变成不会这么定义的 所以你不必理会的   

不过我想说 x=5 ,y=x++*x++(不就是y=5*6=30)

然后 y=--y*--y(不就是y=29*28吗?)
2011-10-17 12:44
kalekale
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2011-10-17
收藏
得分:5 
一般来说,编译器会把++或者--操作分离出来,
注意是一般来说,这个看编译器的,
Y=X++*X++; //这一步会先乘得25,再两次加法X变成7
Y=--Y*--Y; //这一步会先做两次减法,得23x23得529
我没记错的话在《C primer plus》里面强调过这种情形,
在gcc编译器下实测为529。
这种题目说真的挺脑残,但是很多考试里面都出现类似的题目,
真的很无奈,我们的教育真是让人蛋疼。
 
2011-10-17 13:54
ileelsai
Rank: 5Rank: 5
等 级:职业侠客
帖 子:87
专家分:303
注 册:2011-9-25
收藏
得分:2 
X=5;
Y=X++*X++        Y=5*5=25
Y=--Y*--Y        Y=23*23=529
2011-10-17 13:55
糖傻猫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:142
注 册:2011-8-9
收藏
得分:1 
程序代码:
#include <stdio.h>
void main()
{
    int x,y;
    x=5;
    y=x++*x++;
    y=--y*--y;
    printf("%d",y);
}
输出结果:
529
Press any key to continue
2011-10-17 15:20
自强
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:132
专家分:130
注 册:2011-10-3
收藏
得分:0 
回复 4楼 kalekale
不会吧 老兄 这也行 这什么鬼题目 参考教材 可没见它这么说呀 想把人考晕啊 嘿嘿

成为一名真正合格的程序设计人员,是我的梦想……我希望我的梦一直保持下去,直到我从这个世界消失……
2011-10-17 18:38
快速回复:为什么这道题不是586?
数据加载中...
 
   



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

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