南昌IT培训
美国上市IT培训机构

18357109557

热门课程

一个小笔试题在iOS上的不同表现

  • 时间:2017-11-09
  • 发布:南昌达内
  • 来源:达内教育



试题:
        #define product(x) ((x)*(x))
        - (void)test2
    {
        NSInteger x = 3;
        NSInteger y = product(x++);
        NSLog(@"%d",y);
        NSInteger z = product(++x);
        NSLog(@"%d",z);
    }
        经典的结果应该是y=9,z=49,但是ios上的结果是y=12,z=42。求解答?
        解答:为啥说:经典的结果应该是y=9,z=49,这个与编译器的有关。按我的理解,这个IOS是对的。
        #define product(x) ((x)*(x))
        先说第一个:
        NSInteger x = 3;
        NSInteger y = product(x++);
        先得到第一个括号里的x值为3,然后执行x++操作,x变为4,然后得到第二个括号里的x值,此时x值为4,所以(3)*(4) = 12,然后执行x++操作,x值变为5。
        第二个:
        NSInteger z = product(++x);
        NSLog(@"%d",z);
        先获得第一个x值,经过++x,此时x值变为6,获得第二个x值,经过++x,此时x值变为7, 所以z = (6)*(7) = 42。

上一篇:12道iOS常见面试试题及详解
下一篇:如何成为全栈式UI设计师

java面试心得总结

java面试题-关于Java高并发综合

初入职场?怎样应对前端面试呢

web前端开发工程师常见面试题

选择城市和中心
贵州省

广西省

海南省