我想知道,為什么執行下面的代碼塊時沒有錯誤?錯誤應該來自func1塊,因為我們在func2沒有引數的情況下呼叫。引數中傳遞了func2什么?
我也意識到這只發生在func2布爾函式是一個布爾函式時,并且如果它在if陳述句中被呼叫。我知道這"-4"不是從 main 函式傳遞的,因為輸出"1"應該是"0".
#include <iostream>
bool func2(int b) {
return b>0;
}
int func1(int a) {
if (func2) return 1;
else return 0;
}
int main() {
std::cout << func1(-4);
return 0;
}
uj5u.com熱心網友回復:
代碼沒有編譯失敗的原因是函式到函式指標的衰減。
當您僅使用函式的名稱時,它將衰減為指向該函式的指標。然后可以將指標轉換為bool如果true指標指向某物并且false如果它是null指標則將是的。
由于指標指向一個函式,它將有一個非空值,這意味著運算式將計算為true.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450546.html
上一篇:在Snowflake函式的where子句中將NULL作為引數傳遞
下一篇:R:根據資料框的大小調整函式
