在阅读 K&R 时,我遇到了一个示例问题。
这里程序的目的是计算换行符、新词和输入中输入的字符数。书中给出的代码是:
#include <stdio.h>
#define IN 1
#define OUT 0
void main(){
int c, nl, nw, nc, state;
state = OUT;
nl=nw=nc=0;
while ((c = getchar()) != EOF)
{
++nc;
if (c == '\n')
++nl;
if(c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if(state == OUT){
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
它可能看起来很傻,但很抱歉我是 C 的新手。我了解到,如果“if”语句的条件为真,它根本不会检查任何其他 if & else 语句条件,它只执行它的主体,因此不会t 执行其他 else & else if 语句的主体。
但是,在上面的代码(第 16 行)中,在使用非单词(空格)条件检查输入之后,它后面跟着一个 else if 语句。并增加其体内的 nw。但是如果 if 语句的条件为真, else if 怎么会被执行。