我痛苦地走过了K&R第二版。我不清楚示例1.5.4中的最终if(else if)在做什么。
include stdio.h
define IN 1
define OUT 0
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);
}
这是否表示:如果状态为OUT,则在任何情况下都将状态更改为IN,将+1更改为nw
要么
如果状态为OUT,则不执行任何操作,否则将状态更改为IN,如果状态为IN,则将+1更改为nw
文本中的注释是:“ [...] else后面的[语句是一个if,它控制两个大括号中的语句。”
由于某种原因,我很难了解那里发生的事情。有人可以帮忙吗?每当我看到这个时,我都会冻结。
如果您遇到以下任何一种情况:space
或tab
或newline
然后它将您的位置/状态设置OUT
为指示您当前不在某些文本中间(示例asd673r23@#$#
),这意味着您刚刚在字符串中找到了另一个单词,因此它将总数 字数乘以1。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句