所有編譯我試圖正確地拒絕代碼爲什麼'int x = +「foo」;'類型錯誤,但不是語法錯誤?
int main() {
int x = "foo";
}
與一種類型的誤差:const char[4]
不能轉換到int
。爲什麼,同樣的編譯器(包括Ideone.com)給予相同錯誤
int main() {
int x = + "foo";
}
,而不是(因爲我本來以爲)語法錯誤的因爲...標誌+
的?我的第一個想法是const char[4]
衰減到一個指針,而指針又被視爲一個整數值,所以+
表示「正值」。雖然似乎有點牽強,但我預計會在錯誤消息中看到const char*
。
http://ideone.com/LYHiH0將'x'改爲'const char *'編譯,顯然這個加號不是語法錯誤。但我很想知道爲什麼。作爲一個方面說明,在我的ideone中運行時,鏈接的錯誤表明'const char *'不能轉換爲'int',而不是'const char [4]'。 – IllusiveBrian 2014-12-03 15:41:51