作者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/cn.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