如果递增表达式的值不被使用,纯粹使用表达式副作用来改变变量值,则++x;与x++;在作用上效果一样。
但是对于用户定义的,且有用户定义的递增和递减操作符,前缀的效率更高一些。因为用户定义前缀时,将值加1,然后返回结果。但是后缀版本,首先赋值一个拷贝,将其加一,然后将复制的拷贝返回。。所以对于类而言,前缀版本效率更高。
从语义角度来看,前缀参与表达式运算时返回的是x + 1。比较符合++x;的作用。所以C和C++中令x自增时,养成 ++x;的代码风格更好。。在for(;;++x){;}中也是如此。
逗号在C/C++中有两个作用。
-
将变量列表中相邻的名称分开(多用在声明中)
列表就是{}(貌似这个名称在Python中强调更多)。比如int a[2] = {1, 2}; enum food {noodle, chicken}; //注意此处enum food = {noodle, chicken};是不正确的。=是赋值操作符。这里,food不能说是一个变量,更多的可以把它看作是一种类型。然后 {x, y}这样在 = 右边时,表示的一个数组。。。
-
逗号操作符,将两个或者两个以上的表达式合并为一个。
典型的如
等。for(i = 0, j = 0; i < n; ***)
-
逗号的花絮
在
逗号操作符有两个特性:首先它确保先计算左边表达式,再计算右边表达式。其次,逗号表达式的值是右边表达式的值。int i = 0, j = 234;
中,逗号的作用仍然是列表分隔符。。因为这是个声明语句。逗号不能连接两个声明语句。只能连接表达式。
那么cat的值是240。再者,cat的优先级是最低的。所以语句cat = (7, 240);
相当与语句cat = 7, 240;
(cat = 7),240;
- sadasda