表達式的副作用

 

表達式的副作用是指表達式在求值過程中要改變該表達式中作爲操作數的某個變量的值。

產生副作用的原因是:表達式中包含了具有副作用的操作符,這樣的操作符包括:賦值操作符、複合賦值操作符、增1減1操作符。(具有副作用的操作符必須作用於變量)

由作用於變量的操作符(後增1後減1除外)構成的表達式的值就是該操作符所作用的變量所獲得的值,此表達式的值可視同變量:

操作符後增1: int x=3;
cout<< x++;
cout<< ' '<< x;

顯示結果爲: 3 4

此時變量x值是4,而表達式的值是3,因此後增1(後減1同)構成的表達式的值不是該操作符所作用的變量所獲得的值。

由作用於變量的操作符(後增1後減1除外)構成的表達式可視爲變量:

int x=3;
cout<< ++(x+=2); //表達式x+=2可視同變量
cout<< ' '<< x;

判斷正誤:

(1)++++k; //正確。兩個前增1操作符,且是一元操作符,結合順序爲從右至左,

//計算++k後仍然是一個表達式

(2) k----; //錯誤。一元操作符,結合順序爲從右至左,先計算最後兩個--,但沒有變量

(3) (++k)++; //正確。(++k)先計算,視爲變量,在計算括號外面的++

(4) ++k++; //錯誤。先執行後增1,執行完後k++不能視爲變量。不能再執行前增1

(5) k--+=5; //錯誤。同4,執行完k--後是一個常量,不能給常量進行賦值。

(6) k+++5; //正確。

(7) k-++5; //錯誤。先執行k-+,無法被識別。

發佈了48 篇原創文章 · 獲贊 6 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章