簡體   English   中英

C ++中的長整數溢出

[英]Long integer overflow in C++

為什么下面的代碼給出整數溢出警告:

#include <stdio.h>

int main()
{
    long long int x = 100000 * 99999;
    return 0;
}

而下面的代碼可以完美地工作:

#include <stdio.h>

int main()
{
    long long int x = 100000000000000;
    return 0;
}

因為這里

long long int x = 100000 * 99999;

兩個整數相乘。 嘗試

long long int x = 100000LL * 99999;

將其100000LL * 99999LL ,以消除警告。

您應該閱讀

整數文字的類型是該值適合的第一種類型,這取決於使用哪個數字基數和使用哪個整數后綴的類型列表。

(感謝@UnHolySheep,讓我注意到了它)。 如果希望編譯器以不同的方式解釋您的文字,則必須添加后綴。 例如,使用int ,您可以添加LLll以指定它是long long int 帶無符號數字的后綴是u

對於浮點文字,它是相同的:有一個默認類型為double ,但是如果您想使用float ,則可以輕松使用f (或f )后綴。 使用浮點,您甚至可以使用指數表示形式(使用e )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM