[理工] 程式设计

楼主: 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