分享

07 自增运算符 i++,++i

 雪柳花明 2017-03-20
#define product(x) (x*x)
int main()
{
    int i = 3, j, k;
    j = product(i++);
    k = product(++i);
    printf("%d %d", j, k);
    return 0;
}

这题在不同的编译器会有不同的结果:
第一种情况:
j = (i++*i++);=>3*4  第一次i++返回3 第二次i++返回4 最后i的值为5
k = (++i*++i);=>6*7  第三次++i返回6  第四次++i 返回7 最后i的值为7
 
但是还有一种编译器的分析情况是这样
j=(i++*i++)=>3*3 也就是说运行时直接使用的i的值3 但是i最终在内存的值还为5
毕竟加了2次
k = (++i*++i);=>7*7  运行时先计算的++i,然后取出i的最终值7 在计算乘法。
 
还有一种情况为:
j=(i++*i++)=>3*3 也就是说运行时直接使用的i的值3 但是i最终在内存的值还为5
毕竟加了2次
k = (++i*++i);=>5*5  运行时先取出i的值计算乘法,然后i的的值自增2次
终值7

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多