如果遞增表達式的值不被使用,純粹使用表達式副作用來改變變量值,則++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