字尾++操作符的優先順序高於*操作符, 這兩個操作符的結合性是從右向左的。
1、*cp++ 表示式的計算分3個步驟,(1)++操作符產生cp的乙份拷貝;(2)++操作符將cp的值加1,使cp指向下乙個記憶體位置;(3)最後,在cp的拷貝上執行間接訪問操作。
所以該表示式返回的結果仍然是cp指向的內容,並讓cp指向下乙個記憶體位置。
2、(*cp)++ 表示式的計算:(1)加上括號,使它先執行間接訪問操作; (2)++操作符先產生*cp的乙份拷貝,然後++操作符將*cp加1;(3)最後,返回*cp的拷貝。
所以該表示式返回的結果是cp所指向記憶體位置原來的值。例子:
char ch = 'a';
char *cp = &ch;
cout << (*cp)++ << endl;
cout << *cp << endl;
結果:
a
b
C語言求得表示式的字尾表示式
獲取字尾表示式的原理是用乙個字元陣列來存放字尾表示式,用乙個棧來暫時存放運算子,入棧出棧和字元陣列的儲存規則為 一.當字元是運算元,直接存入字元陣列中 二.當字元不是運算元,分三種情況討論 1.字元是 當前字元直接入棧 2.字元是 一直出棧,將出棧的字元存入字元陣列中,直到棧頂元素是 時,將棧頂元素...
C語言 逗號表示式
c語言提供一種特殊的運算子 逗號運算子。用它將兩個表示式連線起來。如 3 5,6 8 稱為逗號表示式,又稱為 順序求值運算子 逗號表示式的一般形式為 表示式1,表示式2 逗號表示式的求解過程是 先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式 3 5,6 8 ...
C語言逗號表示式
c語言提供一種特殊的運算子,逗號運算子,優先級別最低,它將兩式聯接起來,如 3 5,6 8 稱為逗號表示式,其求解過程先表示式1,後表示式2,整個表示式值是表示式2的值,如 3 5,6 8 的值是14,a 3 5,a 4 的值是60,原因在於賦值運算優先順序高於逗號表示式。逗號表示式的要領 1.從左...