最近一段時間在網上看到了許多的c語言關於陣列中使用*和++運算求結果的題目,之後自己寫程式驗證了一下優先順序,在這裡和大家分享一下。
1 #include
2 #include
34 #define m 1056
intmain()
7;9int
*p = q;
10printf
("*p++ = %d "
,*p++);
11printf
("*++p = %d ",*
++p);12
printf
("(*p)++ = %d ",(
*p)++);
13printf
("(*++p)++ = %d ",(
*++p)++)
;14printf
("*p = %d "
,*p);15
printf
("++(*++p) = %d ",++
(*++p));
16printf
("*p = %d "
,*p);17
//printf("*++p++ = %d",*++p++); error;18}
19
結果為 * p++ = 10 * ++p = 20 ( * p)++ = 20 ( * ++p)++ = 4 * p = 5
在這裡可以看出在陣列中當++或- -運算與 * 運算一起運算時先進行++或 - -運算在進行 * 運算。也就是說當出現當出現*p++這種型別的運算時得到的是指標偏移後的結果。
而當( * p)++這種形式出現時得到的是自增自減之後的結果。
當(++ *p)++這種形式出現時我們先做偏移後做自增自減運算。
注意最後注釋上的形式是錯誤的。
C語言弄搞優先順序 優先順序問題
c語言易弄錯優先順序 1.的優先順序高於 操作符用於消除這類問題 p.f誤認 p所指物件的字段f。p f 實際結果 對p取f偏移,作為指標,然後作為解除引用操作。p.f 2.優先順序高於 int ap誤認 ap是個指向int陣列的指標。int ap 實際結果 ap是個元素為int的指標陣列。int ...
C語言優先順序的問題
if riiscon 1 6 0 和 if riiscon 1 6 0 後者使我的程式一直不能執行。乙個c語言優先順序的問題導致我弄了好幾天的程式,以後一定要堅信乙個小小的c語言錯誤都會導致你程式無法執行,一定不要小看這個好像不起眼的錯誤,他們會讓你付出代價的,正想現在我經歷的一樣,乙個 運算子和乙...
c 語言優先順序
link blog id 2880933 寫 的時候,常會翻看的乙個表就是 c語言運算子優先順序表 c的運算子優先順序常常很讓人頭疼。其實,在大學裡學習c的時候,老師告訴大家這個不用一定背下來,用的時候可以找書,或者加小括號就可以了。我聽了,但是後來發現錯了。很多人都聽了,但不是每個人都發現這是錯的...