gpt4 book ai didi

c - C中的空开关盒

转载 作者:太空狗 更新时间:2023-10-29 15:10:34 25 4
gpt4 key购买 nike

我正在阅读一些有关 C 的书籍。我发现了以下内容 example to switch case in C ,我试图理解...

/* caps.c */

#include <stdio.h>
#include <ctype.h>

#define SEEK 0
#define REPLACE 1

int main(void)
{
int ch, state = SEEK;
while(( ch = getchar() ) != EOF )
{
switch( state )
{
case REPLACE:
switch( ch )
{
case ' ': //leaving case empty will go to default ???
case '\t':
case '\n': state = SEEK;
break;
default: ch = tolower( ch );
break;
}
break;
case SEEK:
switch( ch )
{
case ' ':
case '\t':
case '\n': break;
default: ch = toupper( ch );
state = REPLACE;
break;
}
}
putchar( ch );
}
return 0;
}

我很清楚模式SEEK,然后字母大写,然后模式设置为REPLACE,然后字母转换为小写。但是为什么空格会再次触发 SEEK 模式呢?我的评论真的是这样吗?

最佳答案

这就是所谓的 C switch 运算符的 fall-through 行为。如果您在 case 区域的末尾没有 break,控制将传递到下一个 case 标签。

例如,下面的片段

int x = 5;
switch( x ) {
case 5:
printf( "x is five!\n" );
case 2:
printf( "x is two!\n" );
break;
default:
printf( "I don't know about x\n" );
}

输出

x is five!
x is two!

小心。

关于c - C中的空开关盒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254912/

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