存储(和打印)整数的最大数据类型是什么?

时间:2012-01-10 00:27:31

标签: c types int long-integer primitive-types

在32位系统的C中,哪种数据类型将存储(因此可以打印)最大的整数?是long long还是unsigned long?有unsigned long long吗?哪个是最精确和政治正确的?

4 个答案:

答案 0 :(得分:10)

您的问题有点不清楚,但intmax_t是最大的有符号整数值类型(uintmax_t是最大的无符号整数类型)。这些是<stdint.h>中定义的typedef,但是如果要打印它们,则需要<inttypes.h>,而PRInMAX宏需要 n 的各种值。

答案 1 :(得分:2)

在没有围绕丛林的情况下,我想说有时候不是在实际的编码练习中,在某些比赛中肯定是肯定的,人们可能需要非常大的数据类型,我认为我们可以做到这一点。为什么不采用字符串形式的整个序列,然后使用atoi函数来获取整数值,我认为politcally正确:: :)

#include<stdio.h>
#include<stdlib.h>

int main ()
{
    int i;
    char bigString [256];

    printf ("Enter a number: ");
    fgets (bigString, 256, stdin);

    i = atoi (bigString);
    printf ("The value entered is %d.",i);

    return 0;
}

答案 2 :(得分:1)

在ISO C99中long long至少是64位,这是最大的标准整数数据类型。它也是unsigned long long。显然,您的编译器可能会提供由intmax_tuintmax_t定义的更大类型。

但根据您的评论,您可能正在寻找像GMP这样的bigint库。它允许任意长整数(和浮点)仅受系统资源限制。

答案 3 :(得分:0)

具有最长打印字符串的数据类型是带符号数据类型,除非您的整数类型的最大无符号值比最大有符号值长一个数字。

例如,无符号的4位整数在签名时最多为两个无符号字符或一个字符加负号。

因此,您应该选择一个签名数据类型来表示最大的打印字符串。哪个应该是long long