У меня есть следующий код:Различие в значениях atoi
char* input = (char*)malloc(sizeof(char) * BUFFER) // buffer is defined to 100
int digit = atoi(input); // convert char into a digit
int digit_check = 0;
digit_check += digit % 10; // get last value of digit
При запуске вход 1234567896 и точно так же цифра = 1234567896 и digit_check = 6.
Однако, когда я бегу вход 9999999998, digit = 1410065406 и поэтому digit_check = 6, когда это должно быть 8.
Для второго примера, почему существует разница между вводом и цифрой, когда она должна быть того же значения?
Вам нужно выяснить максимальное значение, которое int может хранить на вашей платформе. – nos
@nos Только что узнал об этом, спасибо. –
sizeof (char) по определению. Вы можете безопасно использовать «malloc (BUFFER)». В C вы также можете исключить возвращаемое значение malloc(). – Jack