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