Это был мой код без использования else if:
#include <stdio.h>
main()
{
long s = 0, t = 0, n = 0;
int c;
while ((c = getchar()) != EOF)
if (c == ' ')
++s;
if (c == '\t')
++t;
if (c == '\n')
++n;
printf("spaces: %d tabulations: %d newlines: %d", s, t, n);
}
Это код, использующий else if:
#include <stdio.h>
main()
{
long s = 0, t = 0, n = 0;
int c;
while ((c = getchar()) != EOF)
if (c == ' ')
++s;
else if (c == '\t')
++t;
else if (c == '\n')
++n;
printf("spaces: %d tabulations: %d newlines: %d", s, t, n);
}
По какой-то причине отказ от использования else if не работает. Какова причина? Я знаю, что использование if делает это одно за другим, а использование else if останавливается на первом истинном утверждении. Это имеет разницу в производительности. Во всяком случае, не используя else if в этом конкретном (если не в другом) цикле while, похоже, это не работает.
Спасибо.
{ }
вокруг всего этого. - person Oliver Charlesworth   schedule 30.01.2018