我是 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;
}
基本上,如果第一个输入(numdigits)低于 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
到底是怎么回事?我很生气试图在算法中找到错误,直到我发现错误出现在我没有费心去看的那部分代码中。
提前致谢!