zoukankan      html  css  js  c++  java
  • C++之前置自增与后置自增

    关于前置自增与后置自增的区别我是参考这里:http://bbs.bccn.net/thread-454977-1-1.html

    简单复述下,比如++x; 与 x++;

     在C中,++x这个表达式的值为原先x的值+1,副作用是x的值增加了1;(C++中不是这样定义的,不管它)
     在C中,x++这个表达式的值为原先x的值,副作用是x的值增加了1。
    即记住几个词 表达式表达式求值副作用

    C++ primer:自增运算符必须作用于左值对象,前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。

    建议:除非必须,否则不用递增递减运算符的后置版本(需要将原始值存储下来,增加了额外工作量)。

    一道笔试中做过的题(涉及变量的静态存储):

    void f(int i)
    {
        static int v=i++;
        cout<<v<<endl;
        v=++i;
        cout<<v<<endl;
    }  

    f(1);
    f(0);

    运行后输出:

    3

    3

    1

    执行f(1)时,i 后置自增变为2,v 是静态变量,初始化为1。然后 i 前置自增变为3,v 被赋值为3;

    执行f(0)时,由于v是静态变量,所以不再执行初始化操作,而直接执行后续语句,即输出v,此时v=3。然后 i 前置自增变为1,v 被赋值为1。

  • 相关阅读:
    JDOJ 1090: 矩阵
    JDOJ 2236: Random Num
    浅谈区间DP
    NOIP 2006 能量项链
    小技巧—处理环形区间
    NOI 1995 石子合并
    洛谷 P5640 【CSGRound2】逐梦者的初心
    JDOJ 1101: 邦德I
    JDOJ 1104: 最佳挑水
    JDOJ 1098: 夏娜的菠萝包
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/10190599.html
Copyright © 2011-2022 走看看