繁体   English   中英

C 中的大数字问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM