運算子 的字首 字尾和 的記錄

2021-08-04 04:08:43 字數 1575 閱讀 7779

現有**如下:

在c語言中,*的優先順序和字首++是屬於乙個(結合方向為從右向左),比字尾的++以及–的優先順序高(結合方向為從左向右)~

int a[5] = ;

int*p, *q, b;

p = a;

1.字尾++

p = a;

q = p++;

結果為:p指向a[1], q仍然指向a[0]字尾返回的是自增前的值。

2.字首++

p = a;

q = ++p;

結果為:p指向a[1], q也指向a[1]字首返回的是自增後的值。

3.*p++

p = a;

b = *p++;

p指向a[1], b的值為自增前的值即是a[0]即是10.

4. *(p++)

p = a;

b = *(p++);

結果同3,*和++的運算順序為從右向左

5.*++p

p = a;

p = *++p.

p指向a[1],++p指向自增後的值,即p為a[1]的值,11。

6.*(++p)

p = a;

b = *(++p);

結果同5

7.++(*p)

p = a;

b = ++(*p);

p指向a[1], 只要有++它肯定就會變。b的值為a[0]加1後的值,因為是字首,返回自增後的值。

8.++*p

p = a;

b = ++*p;

結果同7

總結一下原則:

字首,值為變化後,字尾,值為變化前。

在c++中,建議除非必須,否則不使用後置版本的遞增遞減運算子

其原因是前置版本的遞增運算子避免了不必要的工作,把加1後的值直接返

回改變了運算物件。與之相比,後置版本需要先儲存自增前的值,以便返回未修改的值。這是一種浪費。

字首 字尾 運算子過載

舉報 分類 c常用備查 24 c 43 下面例子程式中 const fraction operator int 中 int不過是個啞元 dummy 是永遠用不上的 它只是用來判斷 是prefix 還是 postfix 記住,如果有啞元,則是postfix,否則,就是prefix 就像其他的一元演算法...

簡述字首運算子與字尾運算子

對於初學者,經常糾結的乙個問題就是 for 迴圈中的迴圈量遞增過程中,到底是應該用字首運算子還是字尾運算子。首先談一下字首運算子和字尾運算子有什麼區別 粗略的講,這裡涉及到表示式和語句 和順序點,有點複雜,暫時不在這裡闡述。在大多數情況下 乙個正常的軟體工程規定的程式設計規範和風格,應該是盡量避免那...

字首運算子和字尾運算子優先順序

字首運算子是從右到左 字尾運算子是從左到右!如 1.pt 現將 應用於pt,然後將 應用於被遞增後的pt double x pt increment pointer,take the value i,e.arr 2 or 23.42.pt 另一方面,pt意味著先取得pt指向的值,然後將這個值加1,即...