无聊的C语言考题
五一的晚上好无聊,恰巧看到这个题目,那位作者说这是他参加一家公司笔试的题目.以下程序的输出结果是什么?
main()
{
int x = 1, y = 2;
x = x++ + y++;
y = ++x + ++y;
printf("%d %d", x, y);
}
我用两个不同的编译器测试的结果都是5,9
这种题怎么理解?为什么公司会出这种题目的? 编译器不同得出的结果不同吧?
这种题目好像没有一个明确答案才对啊。 就只有一个答案:
x = x++ + y++;/*先取 x值,y值相加赋与x 接着,x加一,y加一 此时,x=1+2+1=4 y=2+1=3*/
y = ++x + ++y;/*x,y值先加一,然后两者相加,赋与y即些时,x=4+1=5y=5+(3+1)=9*/ 应该是考基础的吧
知识点:++x与 x++的区别 按5,9的答案,我这样分析.
int main()
{
int x = 1, y = 2;
x = x++ + y++;//x=1+2=3;x++,y++离开这句则加1,所以x=x+1=4;y=y+1=3
y = ++x + ++y;//x,y先加1,x=5;y=4;然后y=5+4=9
printf("%d %d", x, y);
}
但也有人说结果未定义,这样无聊的题目应该没多大意义,除非哪天去公司笔试时又遇到这种题. 貌似楼上 的分析对……
和我的分析也一样呀……
int x = 1, y = 2;
x=x+y;
x++;
y++;
x++;
y++;
y=x+y;
[ 本帖最后由 iptton 于 2006-5-7 03:49 编辑 ] 哈哈...我最怕这种题目...
BS出这种笔试题的公司... 为什么要bs呢? 真正项目没人这么写吧???
页:
[1]