Re: [問題] 關於if statement的實作方法
我不是故意找碴
只是想提醒如果 && 是 function call 那完全是另外一回事情
#include <cstdio>
int tmp = 0;
struct A {
A() { printf("%d\n", ++tmp); }
bool operator&&(const A &x) { return false; }
};
int main() {
typedef A B;
if(A() && B());
getchar();
return 0;
}
這樣 A() B() 都會執行
※ 引述《cybernetics (cybernetics)》之銘言:
: Hi all.
: 請問一下,在C語言中下面的寫法:
: if(A() && B() && C())
: {
: ...
: }
: 在我使用的compiler中(uVersion3),只要A()回傳fail,
: B()和C()就_不會_被執行。
: 請問一下,在compiler實作中,上述的情況是定義好永遠為真的流程嗎?
: 或是這取決於各家compiler實作的方式?
: 又,如果我想確定各個函式是否會被執行,是不是就得避免上述的寫法?
: 感謝回答。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.110.160.121
→
05/05 01:08, , 1F
05/05 01:08, 1F
→
05/05 01:09, , 2F
05/05 01:09, 2F
→
05/05 01:19, , 3F
05/05 01:19, 3F
→
05/05 01:20, , 4F
05/05 01:20, 4F
→
05/05 01:33, , 5F
05/05 01:33, 5F
→
05/05 01:34, , 6F
05/05 01:34, 6F
→
05/05 01:34, , 7F
05/05 01:34, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):