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

时间:2017-03-01 05:20:15

标签: c pointers enums switch-statement

为什么默认情况会触发以下内容:

    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打印出特定值的短语。

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

2 个答案:

答案 0 :(得分:3)

break情况下使用switch语句,以便在达到break语句时,交换机终止,控制流跳转到switch语句后的下一行。

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

      case VALUE_TWO:
        ...;
       break;

      default:
        ...;
    }

答案 1 :(得分:0)

在使用switch case语句时,您必须执行类似的操作才能获得正确的结果

switch ( <variable> ) {
case 1:
  Code to execute if <variable> == this-value
  break;
case 2:
  Code to execute if <variable> == that-value
  break;
...
default:
  Code to execute if <variable> does not equal the value following any of the cases
  break;
}

假设您错过了案例2的break语句,因此每当switch-case 2为true时,它将进入所有其他情况(在案例2之后),直到代码遇到break语句。 Break语句用于在执行所需操作后显示案例。 希望如此清楚。