0

C を使用して非常に長い数 (つまり、13 から 16 桁の数字) を表現しようとしています。long long常にオーバーフローの問題が発生しているため、機能していないようです。

誰かがこの問題で私を助けてくれれば幸いです、ありがとう。

long long number = 123654123654123LL;
printf("%ull", number);
4

1 に答える 1

6

フォーマット指定子が正しくありません。%lluタイプは次のようにするnumber必要がありますunsigned long long:

#include<stdio.h>

int main()
{
    unsigned long long number = 123654123654123LL;
    printf("%llu\n", number);

    return 0;
}

出力:

123654123654123

http://ideone.com/i7pLXを参照してください。

フォーマット指定子の後に%ullは、実際に%uは 2 つのl(エル) 文字が続きます。

C99 標準のセクション5.2.4.2.1 Sizes of integer types <limits.h>long longから、およびの最大値はunsigned long long、少なくとも次の値であることが保証されています。

LLONG_MAX +9223372036854775807 // 263 − 1
ULLONG_MAX 18446744073709551615 // 264 − 1

快適に123654123654123範囲内です。

于 2012-08-31T15:34:35.320 に答える