[英]Problem with big numbers in C
当我给它数字 4293974227(或更高)时,为什么这样的代码应该提供如此高的结果
int main (int argc, char *argv[])
{
unsigned long long int i;
unsigned long long int z = atoi(argv[1]);
unsigned long long int tmp1 = z;
unsigned long long int *numbers = malloc (sizeof (unsigned long long int) * 1000);
for (i=0; tmp1<=tmp1+1000; i++, tmp1++) {
numbers[i] = tmp1;
printf("\n%llu - %llu", numbers[i], tmp1);
}
}
结果应以提供的数字开头,但开头如下:
18446744073708558547 - 18446744073708558547
18446744073708558548 - 18446744073708558548
18446744073708558549 - 18446744073708558549
18446744073708558550 - 18446744073708558550
18446744073708558551 - 18446744073708558551
抄送...
这是什么鬼??
谢谢!
atoi()
返回int
。 如果您需要更大的数字,请尝试strtol()
、 strtoll()
或它们的亲戚。
atoi()
返回(int)
,无法处理(long long)
。 尝试atoll()
,或失败atol()
(前者是首选)。
您正在将有符号整数打印为无符号整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.