c - 如何比较 switch-case 中的枚举值?

标签 c pointers enums switch-statement

<分区>

为什么 default case 会触发以下内容:

    typedef enum {VALUE_ONE, VALUE_TWO} someValue;

    typedef struct {
      someValue value;
    } myStruct;

---main() BELOW---

    myStruct* myPtr = malloc(sizeof(myStruct));
    myPtr->value = VALUE_ONE;

    switch (myPtr->value) {
      case VALUE_ONE:
        ...;

      case VALUE_TWO:
        ...;

      default:
        ...;
    }

如果我使用 if 语句,代码将正常运行。目前,我想使用 switch-case 打印出值特定的短语。

更新:忘记了 break 语句。谢谢大家!

最佳答案

switch case 中使用 break 语句,这样当到达 break 语句时,switch 终止并且控制流跳转到switch 语句之后的下一行。

switch (myPtr->value) {
      case VALUE_ONE:
        ...;
        break;

      case VALUE_TWO:
        ...;
       break;

      default:
        ...;
    }

关于c - 如何比较 switch-case 中的枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523792/

相关文章:

c - 我们什么时候不应该使用#pragma pack?

c - 在 C 中初始化指向结构的指针数组

c - 如何初始化这些指针?

entity-framework-4 - EnumDataTypeAttribute 是否应该在使用 Entity Framework 的 .NET 4.0 中正常工作?

c++ - 在 Protocol Buffer 中使用反射设置枚举值

c - 如何在终端中与我刚刚编写的 C 程序进行交互

c - Sprite Packing C 应用程序中的 Sprite 对齐

将用户输入的转义序列转换为它们的真实表示

c - 为什么 NULL 与 '\0' 不同

java - 如何创建没有实例变量的枚举类?