我無法找到有關sizeof行爲的信息(至少在gcc 4.6+中)。下面的代碼工作併產生「預期」結果(4,1,8),但我想知道爲什麼。我查了幾個問題,但沒有一個顯示這樣的例子。sizeof爲什麼返回類型
#include<iostream>
int f1(int) {
return 0;
}
char f2(char) {
return 0;
}
double f3() {
return 0;
}
int main() {
std::cout << sizeof(f1(0)) << std::endl;
std::cout << sizeof(f2('0')) << std::endl;
std::cout << sizeof(f3()) << std::endl;
return 0;
}
答案將不勝感激。 謝謝。
這是正確的。我在http://en.cppreference.com/w/cpp/language/sizeof中找到了對行爲的描述。儘管如此,語法看起來很有趣,因爲函數當然不會被調用。謝謝。 – user1919074 2013-05-10 14:37:02
嗯,不是真的。sizeof(f1)wiuld會產生一個錯誤,如「錯誤:ISO C++禁止將'sizeof'應用於函數類型的表達式[-fpermissive]」,正如本論壇的其他答案中所解釋的那樣 – user1919074 2013-05-10 14:46:03
實際上這個引用是http:// en。 cppreference.com/w/cpp/language/sizeof明確指出'sizeof不能用於函數類型',它的確會產生上面提到的錯誤http://coliru.stacked-crooked.com/view?id=4bf2b300a7b6d97c11a73fdfad6908fa-81f8fd6fe3d78f519fccff6a9c88a3de – 2013-05-10 14:55:51