不好意思想请问一下各位大大
两个function,a(),b(),回传bool
X=a(),Y=b()
这样 if(X||Y)以及if(a()||b())两种写法在执行上会有什么差异呢?
这部分用到的观念是什么或是该搜寻什么关键字
小弟新手入门对一些细节不太熟悉,还请各位帮忙解惑,谢谢大家!
作者:
chuegou (chuegou)
2020-12-15 02:42:00我好像知道你要问啥第二种写法 b()在a()为true时不会执行 这个吗?
第二种写法 a() 如果是 true 就直接判定 true不会再去执行 b() 看 b() 是 true 还是 false关键字是 order of evaluation
作者:
LPH66 (-6.2598534e+18f)
2020-12-15 02:50:00不对, 正确的关键字是 short-circuit evaluation虽然是谁先谁后的问题没错, 但关键是因为前件已经肯定结果所以直接"短路"跳掉后件的求值
对 short-circuit 的部份弄清楚就知道了。
作者:
CoNsTaR ((const *))
2020-12-15 06:40:00b 要有 side effect 执行结果才会有差吧否则只是效能问题?
作者:
dces4212 (flawless)
2020-12-15 22:48:00差别在b()是否执行这种问题建议直接翻规格书 有权威 不怕错C99 6.5.14有说明只要有一个expression为true即不继续往右evaulate其他expression
作者:
kingofsdtw (ä¸èƒ½é–’下來!!)
2020-12-22 22:05:00非x86玩玩看,这样写会死人
这还有一个别名叫sudden death, 比较少见 XD
作者:
Gway (我爱的你 也爱我 好吗?)
2020-12-31 08:17:00差在fun call 代价 其他的版友说的很齐了