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

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

您的问题有点不清楚,但intmax_t是最大的有符号整数值类型(而uintmax_t是最大的无符号整数类型)。 这些是在中定义的typedef,但是如果要打印它们,则需要使用 ,并使用PRInMAX宏来获取各种n值。

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

 #include #include 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; } 

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

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

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

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

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