#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
if (x == EOF)
cout << x;
system("pause");
}
Ввод EOF на Windows ничего не выводит. В то время как -1 выходов -1.EOF не всегда^Z на Windows?
За здесь
#include <iostream>
using namespace std;
int main()
{
int x;
if ((x=cin.get()) == EOF)
cout << x;
system("pause");
}
Ввод в EOF на Windows, выходы -1. Пока -1 ничего не выводит.
Теперь я совершенно запутался (я работаю на 64-битной ОС Windows 7 с Visual Studio 2015, хотя я не думаю, что это связано)
Я также хочу добавить, если «х» присваивается EOF в обоих случаях, откуда эта разница? Я сравниваю значение «x» с EOF в обоих случаях, правильно?
'cin.get()' возвращает 'EOF', если данных нет, поэтому, конечно, сравнение проходит. EOF не является таким персонажем, как вы его рассматриваете. Если вы вводите EOF, это не символ, который читается и сохраняется как 'EOF'. 'EOF' - просто магическое число, представляющее состояние. – chris
@chris Я не понимаю вас, если честно:/ Если EOF не является кафариком, что назначается «x» в первом случае? А что во втором случае? Потому что я сравниваю «x» с EOF в обоих случаях правильно? – hussamash
[вход не работает] (http://en.cppreference.com/w/cpp/locale/num_get/get) в первом случае, потому что читать нечего (ввод EOF завершает данные, это не данные) и конвертировать в 'int' для хранения в' x'. Однако сохранение «EOF» в результате не будет работать даже во всех случаях из-за таких типов, как указатели, которые не могут его сохранить. Вы должны проверить флаги 'std :: cin'. Вход [все еще не работает] (http: //en.cppreference.com/w/cpp/io/basic_istream/get) во втором случае, но он использует возвращаемое значение для возврата 'EOF'. – chris