Я абсолютный новичок в C ++, и я пытался решить одну из задач Project Euler, когда у меня возникла очень странная проблема.Я уменьшил ошибку до следующего:
Рассмотрим следующий простой код:
#include <iostream>
using namespace std;
int main() {
int numdigits;
cout << "digits: ";
cin >> numdigits;
char tmpchar;
cin >> tmpchar;
cout << atoi(&tmpchar) << endl;
return 0;
}
В основном, если первый вход (цифры) ниже 48, все работает нормально, но если ввод 48 илибольше, если есть очень странное поведение:
air:programming santi$ ./lol
digits: 30
3
3 <--- OK
air:programming santi$ ./lol
digits: 48
3
30 <--- Not OK
air:programming santi$ ./lol
digits: 49
3
31 <--- Not OK
air:programming santi$ ./lol
digits: 50
3
32 <--- Not OK
Что происходит?Я разозлился, пытаясь найти ошибку в алгоритме, пока не обнаружил, что ошибка была в той части кода, где я не удосужился сначала посмотреть.
Заранее спасибо!