c語言運算子的問題

時間 2022-06-04 20:10:05

1樓:

1全部這與c語言函式呼叫時對引數的處理機制有關。

在c語言中,引數的呼叫順序是由右至左,具體到這個例子上,對於第乙個printf語句,其中的引數*p,*p++,是傳右引數*p++,再處理*p,這樣,也就是說,如果從左向右看,先調*p++,也以這裡的變數的值實際上是自增之前的值,而再輸出*p時,已經是自增後的值了。

同樣第二個printf,由於先傳右邊的引數,再傳左邊的,自然都是自增運算前的值,可以試驗一下,你在第二個printf之後再新增乙個語句:printf("%d",*p),肯定顯示的是7

2樓:匿名使用者

printf 函式的運算是從右向左,第一種*p++,獲得*p的值為6,++後指標指向7,再次用*p取值時,取得7。

第二種情況先用*p取值,得6,再執行*p++,獲得*p的值為6,再執行++操作。

3樓:匿名使用者

#include

int main(void)

;int *p = arr;

printf("%d %d",*p ,*p++);

return 0;

}結果6,6

#include

int main(void)

;int *p = arr;

printf("%d %d",*p++ ,*p);

return 0;

}結果也是6,6

4樓:

不去查表就多加括號吧,省得為了優先順序鬧心。

C語言邏輯運算子問題,c語言邏輯運算子 我不明白 和 到底是怎麼運算的

c表示式中的操作符按優先順序順序結合,本表示式中運算子的優先順序順序從高到低為 所以表示式計算分解為 temp1 year 4 temp2 year 100 te year 400 temp4 temp1 0 temp5 temp2 0 temp6 te 0 temp7 temp5 temp6 ex...

C語言符合賦值運算子,C語言賦值運算子的結合方向是自右向左嗎?

gta小雞 c a b c 2是錯誤的表示式,賦值運算子的左值必須是可解析的變數表示式,而c a不是乙個合法的左值。c語言賦值運算子的結合方向是自右向左嗎? 賦值運算bai符是自右向左結合的。du以如下 為例zhi int a 1,b 2,c 3 a b c printf d,d,d n a,b,c...

C 過載 運算子的問題,c 運算子過載問題

只拿了你有疑問的兩個函式出來討論,看是否明白 time time operator 這是字首 return this time time operator int 這是字尾 return temp time operator 這表示前 即 time1 呼叫該函式 time operator int ...