值12000000000的C语言数据类型

值12000000000的C语言数据类型,c,C,我想要一个数据类型,它可以在C中保存12000000000(120亿)的值。哪个数据类型接受这个值 我试过long int和long long int。使用long long int和无符号long long int,或位于stdint.h的固定大小版本int64_t和uint64_t。未签名版本的最大值是已签名版本的两倍。它们中的任何一个都能保持你想要的价值 long long int x0 = 12000000000ll; unsigned long long int x1 = 120000

我想要一个数据类型,它可以在C中保存12000000000(120亿)的值。哪个数据类型接受这个值


我试过
long int
long long int

使用
long long int
无符号long long int
,或位于
stdint.h
的固定大小版本
int64_t
uint64_t
。未签名版本的最大值是已签名版本的两倍。它们中的任何一个都能保持你想要的价值

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

只要
printf(“%lld”,x0),您就可以打印签名的长文本,而无符号的长度为
printf(“%llu”,x1)


您还可以在12000000000处阅读有关数值类型大小和值范围的更多信息,因为
long
和更高级别的类型中肯定可以容纳
long
,因为
long
被指定至少有一个范围[−(2^63 − 1) ... +(2^63 − 1) ]或
9223372036854775807

long long twelve_mil = 12000000000;  // No suffix needed
级别较低的类型,如
unsigned long
long
unsigned
int
,也可以工作。示例:C指定
long
的最小范围为[-2147483647…+2147483647],但可能更大

#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
我们可以将此扩展到考虑更低级别的类型,如<代码>未签名的短,<代码>短,<代码>无符号char < /> >代码>符号char < />代码,甚至<代码> char < /代码>。在许多机器上没有结果

代码可以考虑使用<代码>这种常见但可选的类型在

#include
中定义。还声明有
int\u least64\u t
,自C99起一直可用

#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);
#包括
//对于格式说明符
#包括
至少12亿美元=12000000000;
printf(“%”PRIdLEAST64“\n”,一亿二千万);
//或
int64\u t十二密耳=12000000000;//普遍可用
printf(“%”PRId64“\n”,十二密尔);

在这种情况下,
long int
为什么不起作用?@DanielMargosian
long int
可能与
int
大小相同。此外,在大多数系统中,
int32\u t
long int
通常是
int32\u t
。标准规定,
long int
的长度必须至少为32位。看,常数不需要后缀。你应该链接到C答案。哦,这些是最小范围,不是实际范围。你什么意思它不起作用?你有编译错误吗?运行时错误?如果要声明12000000000个元素的数组,则需要指定数组元素的类型,如:
chara[12000000000]。这是一个12000000000
char
值的数组。如果超过内存的最大大小,则会出现运行时错误。看看这里的答案:这不是一百二十亿吗
long-long
应该可以正常工作;它应该至少有64位。您遇到了什么问题?uint64_t使用的格式说明符是什么?@AniketSaxena,
inttypes.h
中的
PRI64u
,但这不应该是您的问题。如果您使用
long-long
使用格式
%llu
请参阅。我如何在C中声明[12000000000]以及该声明的格式说明符是什么。@AniketSaxena我建议您在教程网站上熟悉C的基本知识。是一个很好的起点。@Aniket Saxena要声明如此大的数组,有些平台可能会接受
某种类型的a[12000000000]很多不会。分配是下一个考虑事项<代码>某些类型*a=malloc(sizeof*a*12000000000)。对于数组大小和分配,代码应使用类型
size\t
<代码>大小_t sz=12000000000;某些类型*a=malloc(sizeof*a*sz)如果
大小\u MAX<12000000000
,则需要其他方法。好的,但请向我建议答案。。。
#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);