2013-05-20 43 views
0

在某些變量初始化中,「l」是什麼意思?例如:在某些變量初始化中「l」的含義是什麼 - C++

#define maxpossible  (1000000000L) 
double A = 1L; 
double B = 999999999l; 

「L」和「l」之間有區別嗎?

+0

它指定了一個長雙。 –

+2

主要區別在於'l'可以被誤認爲'1',而錯誤'L'和'1'更難。所以通常最好使用'L'而不是'l',但從語義上講,兩個後綴之間沒有區別。 –

回答

5

這是一個後綴類型說明符,對於AB您可以閱讀關於floating point literals here的更多信息。簡短的回答是Ll都表示long double。對於maxpossible你可以閱讀約integer literal hereL表示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

    +0

    除了這裏的所有三個文字都是整數。 –

    +0

    @MikeSeymour現在我已經喝咖啡了,可悲的是,你是第一個接受咖啡的人。我仍然不知道當我回答時我認爲我看到了什麼(我必須精神上插入一個十進制數),但是很明顯,當我更新完整性檢查時就會發現它並且通常是我所做的。感謝您指出。 –

    2

    因爲這些是literal constants

    後綴lL使得常數爲longlong double

    在你的例子中,maxpossible是一個long integerAB都是長雙打。但是由於您宣稱它們爲double,因此它們存儲爲doubles