gpt4 book ai didi

c - 否则为什么 if 在这里只使用一次呢?

转载 作者:行者123 更新时间:2023-11-30 20:19:09 24 4
gpt4 key购买 nike

我不明白这段代码的一部分:

#include <stdio.h>

#define IN 1 /* inside a word */
#define OUT 0 /* outside a word */

/* count lines, words, and characters in input */
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("char: %c %x | state: %d | word: %d\n", c, c, state, nw);
}
printf("%d %d %d\n", nl, nw, nc);
}

为什么他们只使用一次“else if”而不是第二次?

最佳答案

无论第一个 if 测试的结果如何,都必须执行第二个 if 测试。因此,第二次测试没有附加任何其他内容。也许更好的编写方式是:

if ( (c == ' ') || (c == '\n') || (c == '\t') ) {
state = OUT;
if ( c == '\n' ) {
++n1;
}
} else {
state = IN;
++nw;
}

使用 isspace() 函数可能会更清楚(假设这是真正想要的):

if ( isspace(c) ) {
state = OUT;
if ( c == '\n' ) {
++n1;
}
} else {
...
}

关于c - 否则为什么 if 在这里只使用一次呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51540869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com