C語言在陣列使用 和 優先順序問題

2021-09-26 04:18:17 字數 910 閱讀 4530

最近一段時間在網上看到了許多的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的時候,老師告訴大家這個不用一定背下來,用的時候可以找書,或者加小括號就可以了。我聽了,但是後來發現錯了。很多人都聽了,但不是每個人都發現這是錯的...