看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《jerki (Dennis)》之銘言: : 因為還在初心者的階段,若問了笨問題請多包涵 : 程式: : int A[5]; : int *P; : for(i=0;i<=4;i++) : A[i]=5-i; : P=A; : 請問下列結果為何? 是各別五小題 : 1.Printf(*P++) ans:5 (我算是6,*優先權較高所以先取A[0]再++) : 2.Printf(*++P) ans:4 (這題就難懂了,不知誰該先做) : 3.Printf(++*P) ans:4 (還是6,一樣先做*P再++) : 4.Printf((*P)++) ans:4 (括號先算,算出來是6) : 5.Printf(*--P) ans:4 (同第二題) : 若題目答案沒問題,那我一定是觀念哪裡錯誤了.. : 麻煩板友指點,萬分感謝Q_Q A[0] = 5; A[1] = 4; A[2] = 3; A[3] = 2; A[4] = 1; Ans1. *P++ = 先 *P 再 P++ A[0] = 5; <----- P A[1] = 4; A[2] = 3; A[3] = 2; A[4] = 1; 先取得 A[0] 值然後 P 向後移一位 A[0] = 5; A[1] = 4; <----- P A[2] = 3; A[3] = 2; A[4] = 1; Ans2. *++P = 先 ++P 再 *P A[0] = 5; A[1] = 4; <----- P A[2] = 3; A[3] = 2; A[4] = 1; P 先向後移一位再取得 A[2] 值 A[0] = 5; A[1] = 4; A[2] = 3; <----- P A[3] = 2; A[4] = 1; (答案似乎有錯) Ans3. ++*P = 先對 *P 的值 ++ 再取得 *P A[0] = 5; A[1] = 4; A[2] = 3; <----- P A[3] = 2; A[4] = 1; 變成 A[0] = 5; A[1] = 4; A[2] = 4; <----- P A[3] = 2; A[4] = 1; Ans4. (*P)++ = 先取得 *P 再對 *P 的值 ++ A[0] = 5; A[1] = 4; A[2] = 4; <----- P A[3] = 2; A[4] = 1; 先取得 A[2] = 4 再變成 A[0] = 5; A[1] = 4; A[2] = 5; <----- P A[3] = 2; A[4] = 1; Ans5. *--P = 先對 P 往前移一位 再取得 *P 的值 A[0] = 5; A[1] = 4; A[2] = 5; <------ P A[3] = 2; A[4] = 1; 變成 A[0] = 5; A[1] = 4; <------ P A[2] = 5; A[3] = 2; A[4] = 1; 再取得 A[1] = 4 第二題答案應該有錯 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.201.184
jerki:感謝大家回應 V大這應該是五題連續著做吧@@ 06/03 16:15
visor:恩 連著的 06/03 16:31
ilovebbs:咦.題目不是分開的? 06/03 17:18
visor:那推文我後來才看到的 -.- 06/03 21:58
diabloevagto:你自己清楚題目嗎= =你有個回應說各自獨立 06/03 23:30
diabloevagto:令一個又說連續。 06/03 23:30
visor:哦 請問樓上在哪看到我回應各自獨立的呀 06/04 08:24