作者u0424064 (ching)
看板Grad-ProbAsk
標題[理工] 程式設計
時間Thu Feb 13 16:50:44 2020
https://i.imgur.com/ImThqxn.jpg
想問這題答案為什麼是B
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.11.69.109 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1581583846.A.549.html
1F:推 beatssola: 因為X==0 之後另一邊讀1&&k 得正就跳出去了 所以=8 02/13 17:10
2F:→ beatssola: 講義有優先順序要讀熟 02/13 17:10
3F:→ beatssola: X=0 手殘按到多一個= 02/13 17:10
4F:推 GlassesKJ: 不是==的優先度最高,再來是&&,最後是=嗎? 02/13 17:17
5F:→ GlassesKJ: 我以為是:看1==0,得0 02/13 17:18
6F:→ GlassesKJ: 0&&k++ 02/13 17:18
7F:→ GlassesKJ: 因為已經有0在&&前面了,直接跳掉 02/13 17:18
8F:→ GlassesKJ: 最後x=0,k=8 02/13 17:18
9F:推 beatssola: 喔喔對欸 樓上正解 02/13 17:21
10F:→ u0424064: 想問++是對哪個operand做運算? 我以為++優先是最高 02/13 17:40
11F:→ u0424064: 喔喔 應該說&&結束就跳出去 為什麼會這樣 不太懂 02/13 17:42
12F:推 GlassesKJ: 我是這樣想的: 02/13 17:50
13F:→ GlassesKJ: &&是and,如果已知左邊的是0,那右邊就不會判斷可以直 02/13 17:50
14F:→ GlassesKJ: 接跳過 02/13 17:50
15F:→ GlassesKJ: 所以這題k++根本不會運算 02/13 17:50
16F:→ GlassesKJ: 因為看到0&&……就可以直接跳掉了 02/13 17:50
17F:→ GlassesKJ: 有錯歡迎指出 02/13 17:50
18F:→ u0424064: 你說的是對的 我剛剛跑了一下 改成1&&k++ 就變19 了 02/13 17:55
19F:→ u0424064: 想另外再問一題int a=5; a= ++a + ++a; printf(a); 02/13 18:00
20F:→ u0424064: 結果是14怎麼會這樣? 02/13 18:01
21F:→ mathtsai: 感覺要看compiler 我覺得沒人會這樣寫就是了 02/13 20:10
22F:推 GlassesKJ: 這個我先假設你要的是 02/13 20:53
23F:→ GlassesKJ: (++a)+(++a) 02/13 20:53
24F:→ GlassesKJ: 如果不這樣打我的dev會直接不給過 02/13 20:53
25F:→ GlassesKJ: 先說我也不知道誰會這樣寫 02/13 20:53
26F:→ GlassesKJ: 不過概念應該是這樣 02/13 20:53
27F:→ GlassesKJ: ++a表示在整個東西跑之前先加 02/13 20:53
28F:→ GlassesKJ: 所以第一個++a會讓a變6 02/13 20:53
29F:→ GlassesKJ: 第二個變7 02/13 20:53
30F:→ GlassesKJ: 接著才是真正做這一行 02/13 20:53
31F:→ GlassesKJ: a=a+a 02/13 20:53
32F:→ GlassesKJ: 也就是a=7+7 02/13 20:53
33F:→ GlassesKJ: 最後印14 02/13 20:53
34F:→ u0424064: 知道了 感謝! 02/14 09:22
35F:→ qwer87511: google Short-circuit evaluation 02/21 02:13