楼主:
u0424064 (ching)
2020-02-13 16:50:44https://i.imgur.com/ImThqxn.jpg
想问这题答案为什么是B
作者:
beatssola (Shark5566)
2020-02-13 17:10:00因为X==0 之后另一边读1&&k 得正就跳出去了 所以=8讲义有优先级要读熟X=0 手残按到多一个=
不是==的优先度最高,再来是&&,最后是=吗?我以为是:看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做运算? 我以为++优先是最高喔喔 应该说&&结束就跳出去 为什么会这样 不太懂
我是这样想的:&&是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 我觉得没人会这样写就是了
这个我先假设你要的是(++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