powerwind 发表于 2006-5-1 23:57

无聊的C语言考题

五一的晚上好无聊,恰巧看到这个题目,那位作者说这是他参加一家公司笔试的题目.

以下程序的输出结果是什么?

      main()
      {
            int x = 1, y = 2;

            x = x++ + y++;
            y = ++x + ++y;

            printf("%d %d", x, y);
      }


我用两个不同的编译器测试的结果都是5,9

这种题怎么理解?为什么公司会出这种题目的?

gyCai 发表于 2006-5-2 01:00

编译器不同得出的结果不同吧?
这种题目好像没有一个明确答案才对啊。

iptton 发表于 2006-5-5 23:18

就只有一个答案:

         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*/

iptton 发表于 2006-5-5 23:20

应该是考基础的吧

知识点:++x与 x++的区别

powerwind 发表于 2006-5-6 19:57

按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);
      }

但也有人说结果未定义,这样无聊的题目应该没多大意义,除非哪天去公司笔试时又遇到这种题.

iptton 发表于 2006-5-7 03:08

貌似楼上 的分析对……

和我的分析也一样呀……
         

   int x = 1, y = 2;

               x=x+y;
               x++;
               y++;
               x++;
               y++;
               y=x+y;

[ 本帖最后由 iptton 于 2006-5-7 03:49 编辑 ]

wool王 发表于 2006-5-7 19:48

哈哈...我最怕这种题目...

BS出这种笔试题的公司...

jinry 发表于 2006-5-9 01:38

为什么要bs呢?

wool王 发表于 2006-5-9 11:24

真正项目没人这么写吧???
页: [1]
查看完整版本: 无聊的C语言考题