c - switch case在c语言中与数组一起使用

标签 c if-statement assembly switch-statement

<分区>

如何在 C 语言中使用带数组的 switch case?我知道我可以使用 if 语句来满足我的需求,例如:

char *choice[]={'option1', 'option2'}
    if (strcmp choice[0], input)==0){
        // do the job
    }
    else{
        // something
    }

所以我写这篇文章的原因是因为我看到人们在这里提供了一些很好的指南,但这不是他们要求的,所以我只是想澄清一下,我知道这些概念,我只是为了获得提示或相关示例来查看我如何在 C 语言中将 switch case 与数组一起使用。有些地方说 switch 不能使用数组字符串,所以想澄清一下是否属实。

最佳答案

不可以,您不能在 switch 语句中使用字符串(也不能使用任何类型的数组)。根据 C11 标准,

The controlling expression of a switch statement shall have integer type.

这是 switch 语句实现方式的结果。尽管不是由标准强加的,但实现 switch 语句的一种常见方法是使用指向代码的指针数组,并在每个可能的 case 值处放置需要执行的指令。这也是if fall through的原因:一旦发现case,它就从我之前提到的数组指示的位置开始执行指令,并且没有停止机制。

由于您不能使用数组来索引数组,因此在 switch 语句中禁止使用它们。

关于c - switch case在c语言中与数组一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49595391/

相关文章:

c - vim:显示 C 聚合(结构/union )成员的类型,即使是嵌套的

c - Visual Studio Express 2015 : Cannot open . exe 文件中出现 LNK1104 错误

iOS比较标签的值(value)

c# - 如何在 C# 的 "if"语句中创建多个控件为假的方法?

assembly - 清理堆栈时可以将动态值(寄存器或内存)与 RET 一起使用吗?

c - 使用 gcc "define but not used"说明符时收到 "__thread"警告

c - 在 Linux 上可选地使用 CUDA

c - 我如何重写这个 if-else 语句,使其不使用跳转?

c++ - unsigned int 到 unsigned long long 定义明确吗?

documentation - 我如何在流程图中表示中断(对于微 Controller )?