後綴l
和L
對於數字文字long int
和long double
是相同的。我不明白編譯器如何知道我的數字文字是長整型還是長整型,如果它們共享相同的後綴。爲什麼這個工作?數字文字後綴long int和long double都是l/L?
我知道我錯過了一些完全明顯的東西。
後綴l
和L
對於數字文字long int
和long double
是相同的。我不明白編譯器如何知道我的數字文字是長整型還是長整型,如果它們共享相同的後綴。爲什麼這個工作?數字文字後綴long int和long double都是l/L?
我知道我錯過了一些完全明顯的東西。
文字數字需要有句點或指數才能被當作浮點常量。如果它沒有任何這些,它將被視爲一個整數字面常量。
從C11 6.4.4.2/4:
一種無後綴浮動恆定具有雙重類型。如果後綴爲字母f或F,則其類型爲float。如果後綴爲字母l或L,則其類型爲long double。
A 浮動常數由6.4.4.2開始處的語法定義。它必須包含.
,所以不會含有可能不包含整數常量的歧義。
另請參見相關問題:[附加到數字的「.f」的用途?](http://stackoverflow.com/q/4828167/96780),[爲什麼不將「0f」視爲C++中的浮點文字?](http://stackoverflow.com/q/3961467/96780) –
感謝您的第一個鏈接。我在嘗試在我的編譯器中將一個f後綴附加到一個整數字面上,並且給了我語法錯誤。這解釋得很好。 – Bryan