大的數字,爲什麼要這樣的代碼應該提供這麼高的結果,當我給它數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