大的数字,为什么要这样的代码应该提供这么高的结果,当我给它数4293974227(或更高版本)问题在C
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
ECC ...
这是什么废话?
谢谢!
'atoi'(和朋友)无法检测到错误。 'atoi(“foobar”)'调用未定义的行为(可能返回'0')并且不会显示错误。坚持'strtol'(和朋友) – pmg 2011-06-05 18:59:23
当你不明白发生了什么事情时,不要这么快就把某些东西标记为“垃圾”。 – 2011-06-05 19:15:18