ファイル内のある文字(例えばa)を数えるときに、

while(!cin.eof()) {
cin >> c;
if(c == 'a') { count++; }
}
と書くのと、
while(1) {
cin >> c;
if(c == EOF) { break; }
if(c == 'a') { count++; }
}
と書くのとでは結果が違いますが、これはどうしてでしょうか。
上でも良いような気がするのですが。