天天看点

++的前缀与后缀效率;逗号操作符

如果递增表达式的值不被使用,纯粹使用表达式副作用来改变变量值,则++x;与x++;在作用上效果一样。

但是对于用户定义的,且有用户定义的递增和递减操作符,前缀的效率更高一些。因为用户定义前缀时,将值加1,然后返回结果。但是后缀版本,首先赋值一个拷贝,将其加一,然后将复制的拷贝返回。。所以对于类而言,前缀版本效率更高。

从语义角度来看,前缀参与表达式运算时返回的是x + 1。比较符合++x;的作用。所以C和C++中令x自增时,养成 ++x;的代码风格更好。。在for(;;++x){;}中也是如此。

逗号在C/C++中有两个作用。

  1. 将变量列表中相邻的名称分开(多用在声明中)

    列表就是{}(貌似这个名称在Python中强调更多)。比如
    int a[2] = {1, 2};
    enum food {noodle, chicken}; //注意此处enum food = {noodle, chicken};是不正确的。=是赋值操作符。这里,food不能说是一个变量,更多的可以把它看作是一种类型。然后 {x, y}这样在 = 右边时,表示的一个数组。。。
          
  2. 逗号操作符,将两个或者两个以上的表达式合并为一个。

    典型的如

    for(i = 0, j = 0; i < n; ***)

    等。
  3. 逗号的花絮

    int i = 0, j = 234;

    中,逗号的作用仍然是列表分隔符。。因为这是个声明语句。逗号不能连接两个声明语句。只能连接表达式。

    逗号操作符有两个特性:首先它确保先计算左边表达式,再计算右边表达式。其次,逗号表达式的值是右边表达式的值。

    cat = (7, 240);

    那么cat的值是240。再者,cat的优先级是最低的。所以语句

    cat = 7, 240;

    相当与语句

    (cat = 7),240;

  • sadasda