總結 自增自減操作以及左右值的區別

2021-08-17 02:17:13 字數 1498 閱讀 2635

一、自增自減前操作與後操作的區別

在c/c++中,自增(++)自減(--)操作符為資料物件加1和減1操作提供了一種方便簡潔的實現方式。他們都有前置和後置兩種形式。下面給出簡單的**實現:

#includeint main()

所以,從上面的**中可以看出:前自增自減操作優先順序大於賦值運算子(=),而後置自增自減操作的優先順序小於賦值運算子,後自增自減操作後表示式的值不會發生改變。小小筆試題:

//i++與++i之間的運算:

#includeint main()

上面的這段**你認為結果是多少呢?

沒有結果,因為不同的編譯器做出來的結果是不同的,我用vs2015和gcc出來的結果是不一樣的,如下圖所示:

vs下執行結果:

linux下面gcc的結果:

二、指標自增自減有何不同

下面給出一段**:

//指標的自增自減操作

#include#include#include#includeint main()

執行結果:

所以,變數的自增自減是修改變數的值。指標的自增自減是修改指標的指向位址。

三、什麼是左值和右值

左值可以出現在賦值語句的左邊或右邊,也就是說左值可以當右值使用。右值只能出現在賦值的右邊,不能出現在賦值語句的左邊。變數是左值,因此可以出現在賦值語句的左邊。數字字面值是右值,因此不能賦值。在實際上,左值是一塊記憶體儲存資料要操作的位址。而右值是乙個具體的數字或資料也就是該記憶體儲存的資料內容。

示例**如下:

int a = 1;//變數a是乙個左值

char str = "hello bit";//陣列成員str[i]是左值

"hello bit";//這個表示式是乙個資料內容,它是乙個右值

str("hello bit");//這也是乙個右值

注意:有些操作符,例如賦值,要求其中的乙個運算元必須是左值。結果,可以使用左值的上下文比右值更廣,左值出現的上下文決定左值是如何使用的。

所以,變數是左值,可以出現在賦值語句的左邊,數字字面是右值,不能被賦值。

自增 和自減 操作符

自增操作符和自減操作符經常要在我們自定義的類型別中使用到,而使用時經常會出現問題。現把自己在學習的過程中的 拿出來看一下,也是c primer中的例子如下 ifndef check ptr define check ptr include using namespace std class chec...

關於自增自減操作符

c c 中自增自減運算子相信是不少人的乙個困擾,這個問題也一直困擾著我,今天再次翻開書本來看了看,有了些新的體會,所以在這裡記錄下來,同時也與那些像我一樣被困擾的人分享,程式設計大牛可以繞道了,或者有什麼不對的地方請大牛們指正。以 為例,如下程式輸出結果是什麼 int a 0,j 1 a j cou...

自增和自減操作符

毫無疑問,自增 和自減 操作符為物件加1或減1操作提供了方便簡短的實現方式。程式設計中的宗旨 簡潔即美 它們有前置和後置兩種使用形式 int i 0,j j i j 1,i 1 prefix yields incremented value j i j 1,i 2 postfix yields un...