长不';t显示大数,而不是从C中的内存中输出随机数

长不';t显示大数,而不是从C中的内存中输出随机数,c,C,所以我有一些代码来获取一些大的数字,我将它们存储在long中,但是输出仍然不正确,因为我得到了负数 这是我的密码: int user_want =0; long answer=1; int loop = 0; printf("What is required?"); scanf("%d", &user_want); for(loop=1;loop<=user_want; loop++){ answer = answer*loop pr

所以我有一些代码来获取一些大的数字,我将它们存储在
long
中,但是输出仍然不正确,因为我得到了负数

这是我的密码:

int user_want =0;
long answer=1;
int loop = 0;
printf("What is required?");
scanf("%d", &user_want);
for(loop=1;loop<=user_want; loop++){
  answer = answer*loop
  printf("%ld\n", answer)
}
int user\u want=0;
长答案=1;
int循环=0;
printf(“需要什么?”);
scanf(“%d”,用户希望(&U);

for(loop=1;loop在大多数平台上long与int相同。您需要使用long-long,它使用更多字节(同样,在大多数平台上:-))。您可以打印出
sizeof(int)
sizeof(long)
等,以查看它们在您的平台上使用了多少字节。
顺便说一句,您得到的数字只是计算中溢出的结果。

这是否回答了您的问题?请参阅。系统上的
LONG\u MAX
的值是多少?如果需要该值,请使用
LONG
。@RandomDavis可能更好:值不同,因为使用的整数类型是
无符号LONG
,但根本原因是一样的。我尝试了
long-long
但没有成功。它将比使用long更正确一点。如果您希望它“永远”正确,那么您需要使用一个无限精度库,如gmp()。我怀疑大多数平台的
long
大小与
int
相同的说法。LP64现在在台式机和嵌入式设备中非常常见。LP32(16位整数)在过去也很流行