[SOLVED] Недавно я задал вопрос о некотором коде, который, как я думал, я действительно хорошо понял.Невозможно понять подсчет слов в C
Но после нескольких дней, когда я оглянулся назад для пересмотра, возник новый вопрос из того же фрагмента кода (принятого на языке программирования C C ПРОГРАММИРОВАНИЕМ Второе издание Брайана В. Кернигнана (ISBN-13: 978-8131704943)). ,
Вот код:
#include <stdio.h>
#define IN 1
#define OUT 0
main()
{
int nw, c, state;
state = OUT;
nw = 0;
while ((c = getchar()) != EOF)
{
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT)
{
state = IN;
++nw;
}
}
printf("%d", nw);
}
Так что я сделал некоторые случайные испытания и нашел, что я не мог объяснить или понять:
Почему код не работает, когда у меня есть
state = OUT
послеnw = 0
Когда я обычно запускал этот код, он дал мне правильный нет. слов, но, когда я меняю порядок state = OUT and nw = 0
, он всегда возвращал ответ, равный 0, почему это так? Я знаю, что порядок важен в C, но почему этот конкретный заказ только ??
2.Что такое значение if-else в строчке вкратце ???
3.Acc. к книге государство вар. было определено, чтобы определить, было ли getchar внутри слова или нет, но я не понимаю, как именно состояние var. Сделай так ??
4.
Также, что с автором использует эквивалентность и равенство? Я заметил, что когда он делает условие, он использует эквивалентность, иначе использует равенство, правильно?
Спасибо ...
Я думаю, вы неправильно скопировали код. Строка 'state == OUT;' после 'if (c == ...' должна использовать '=' вместо '=='. – jwodder
Этот вопрос не соответствует теме, так как исправление опечатки решает проблему. –
Извините, опечатка (исправленный сценарий), но мне очень хотелось узнать о скрипте, пожалуйста, не отмечайте это вне темы ......... – ArchKudo