一个非常简单的程序:逐行读取文件(每行包含整数)然后执行某些操作并将输出写入文件。
int main()
{
ifstream fin ("f:\in.txt");
ofstream fout ("f:\out.txt");
int a;
while (fin >> a) {
int b = (a >> 6) & 255;
fout << b << endl;
}
return 0;
}
输入为多行,如下所示:
93859312
2635577168
2929619024
312396812
3019231016
3139200356
...
但是while
循环只迭代一次!!和输出只包含
183
这对应于第一个输入行。为什么???
答案 0 :(得分:8)
第一个之后的数字大于int
可以表示的数字。
而不是int a;
,请使用long long int a;
int
可以表示的最大值是2,147,483,647:
What is the maximum value for an int32?
你的第一个值小于此值,但你的第二个值不是。 因此(fin&gt;&gt; a)失败(即不是真的),并且你的程序退出while循环。