天天看點

++的字首與字尾效率;逗号操作符

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