Рассмотрим следующий код:GetChar() в течение условия цикла
int main()
{
char c;
for(;(c=getchar())+1;)
printf("%c\n",c);
}
Он получает символы, что я войти в терминал и печатает их. Когда я удаляю +1
в состоянии, программа работает, но она не останавливается, когда сигнал EOF
(Ctrl + D). Когда я меняю его на +2
той же проблемой.
Мой вопрос как это +1
работы? Связано ли это с getchar()
или for
?
Поскольку 'EOF' обычно определяется как' -1' и '-1 + 1 = 0'. Короче говоря, не делайте этого. То, что вы должны сделать, это 'while ((c = getchar())! = EOF)' – user3386109
И, 'char c;' -> 'int c;' потому что 'getchar()' возвращает 'int'. –
Чтобы подчеркнуть, на что @ user3386109 и @WeatherVane писал: вы должны использовать обе меры! EOF ** обычно ** - '-1', это не гарантируется! Общий совет: прочитайте документацию о функциях и макросах и т. Д., Которые вы используете! Все это можно найти в любой книге C. Наряду с тем, что добавляет средство в C (математические основы должны быть жесткими в школе). – Olaf