C语言中的数据类型,值为12000000000

时间:2016-07-29 15:43:04

标签: c

我想要一个可以在C中保存值12,000,000,000(120亿)的数据类型。哪种数据类型接受此值?

我已经尝试了long intlong long int

2 个答案:

答案 0 :(得分:2)

12,000,000,000当然可以放在long long和更高等级的类型中,因为9,223,372,036,854,775,807指定范围至少 [ - (2 ^ 63 - 1).. 。+(2 ^ 63 - 1)]或long long twelve_mil = 12000000000; // No suffix needed

unsigned long

排名较低的类型,例如longunsignedintlong 可能也可以使用。示例:C指定#if 12000000000 >= INT_MAX int twelve_mil = 12000000000; printf("%d\n", twelve_mil); #elif 12000000000 >= LONG_MAX long twelve_mil = 12000000000; printf("%ld\n", twelve_mil); #else long long twelve_mil = 12000000000; printf("%lld\n", twelve_mil); #endif 最小范围为[-2147483647 ... +2147483647],但可能更多。

unsigned short

我们可以对此进行扩展,以考虑排名较低的类型,例如shortunsigned charsigned char char甚至int64_t。在许多机器上都没有成果。

代码可以考虑使用#include <stdint.h>。这个常见的可选类型在int_least64_t中定义。同样声明有#include <stdint.h> // for format specifiers #include <inttypes.h> int_least64_t twelve_mil = 12000000000; printf("%" PRIdLEAST64 "\n", twelve_mil); // or int64_t twelve_mil = 12000000000; // Commonly available printf("%" PRId64 "\n", twelve_mil); ,自C99以来一直可用。

<animate>

答案 1 :(得分:0)

使用long long intunsigned long long int,或int64_t中的固定尺寸版本uint64_tstdint.h。无符号版本的最大值是签名版本的两倍。任何一个都可以保持你想要的价值。

long long int x0 = 12000000000ll;
unsigned long long int x1 = 12000000000ull;

#include "stdint.h"

int64_t x0 = 12000000000ll;
uint64_t x1 = 12000000000ull;

您可以将签名的长号打印为printf("%lld", x0);,将无符号长号打印为printf("%llu", x1);

您还可以在https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx

了解有关数字类型的大小和值范围的更多信息