[理工] 程式設計

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

Links booklink

Contact Us: admin [ a t ] ucptt.com