在某些變量初始化中,「l」是什麼意思?例如:在某些變量初始化中「l」的含義是什麼 - C++
#define maxpossible (1000000000L)
double A = 1L;
double B = 999999999l;
「L」和「l」之間有區別嗎?
在某些變量初始化中,「l」是什麼意思?例如:在某些變量初始化中「l」的含義是什麼 - C++
#define maxpossible (1000000000L)
double A = 1L;
double B = 999999999l;
「L」和「l」之間有區別嗎?
這是一個後綴類型說明符,對於A
和B
您可以閱讀關於floating point literals here的更多信息。簡短的回答是L
和l
都表示long double
。對於maxpossible
你可以閱讀約integer literal here和L
表示long
。
編輯
麥克·西摩好心指出所有的文字都是integer
文字。這只是表明,當你不理智的時候檢查你的答案,你會說錯話。一個簡單的合理性檢查會一直如下:
#include <iostream>
#include <typeinfo>
int main()
{
std::cout << typeid(decltype(1L)).name() << std::endl ;
std::cout << typeid(decltype(999999999l)).name() << std::endl ;
std::cout << typeid(decltype(1000000000L)).name() << std::endl ;
}
這給了我l
爲每一個運行,通過c++filt -t
給我long
。什麼會使文字浮點文字?無論是:含有小數點與指數形式
4e2
例如
std::cout << typeid(decltype(.1l)).name() << std::endl ;
std::cout << typeid(decltype(1e2L)).name() << std::endl ;
這給了我e
這兩種情況下,並運行那通過c++filt -t
給我long double
。
除了這裏的所有三個文字都是整數。 –
@MikeSeymour現在我已經喝咖啡了,可悲的是,你是第一個接受咖啡的人。我仍然不知道當我回答時我認爲我看到了什麼(我必須精神上插入一個十進制數),但是很明顯,當我更新完整性檢查時就會發現它並且通常是我所做的。感謝您指出。 –
因爲這些是literal constants。
後綴l
或L
使得常數爲long
或long double
。
在你的例子中,maxpossible
是一個long integer
。 A
和B
都是長雙打。但是由於您宣稱它們爲double
,因此它們存儲爲doubles
。
它指定了一個長雙。 –
主要區別在於'l'可以被誤認爲'1',而錯誤'L'和'1'更難。所以通常最好使用'L'而不是'l',但從語義上講,兩個後綴之間沒有區別。 –