flagyan 发表于 2010-12-15 11:07:05

请教高手,关于C语言的 switch case语句

struct _EX{
        unsigned int a;
        unsigned int b;
};
typedef struct _EX ex_t;
ex_t ex;

int main(void)
{
    ex.a = 2;
    index = 6;
    switch(ex->a)
    {
      case 0: index--;
      case 1: index--;
      case 2: index--;
      case 3: break;
      default: break;
    }
}

上面的代码在keil mdk下编译会出错:error:#44: expression must have pointer type。
但是把switch(ex->a)改为switch(ex.a)就没有问题。
请教各位,这是什么原因?switch中的变量不能用 -> 吗?谢谢。

flagyan 发表于 2010-12-15 11:11:48

原来是因为 -> 符号是给指针用的。

惭愧,发了个垃圾帖子……

bigZ 发表于 2010-12-15 11:51:19

switch(ex.a)
    {
      case 0: index--; break;
      case 1: index--; break;
      case 2: index--; break;
      case 3: break;
      default: break;
    }

crazy-avr 发表于 2011-1-1 00:27:01

语法规范,没有为什么

hzr0071 发表于 2011-1-1 10:45:13

->是神马意思啊???????

eddia2012 发表于 2012-11-13 21:24:37

改成指针变量就可以了:
struct _EX{
      unsigned int a;
      unsigned int b;
};
typedef struct _EX*ex;

就可以:
int main(void)
{
    ex.a = 2;
    index = 6;
    switch(ex->a)
    {
      case 0: index--;
      case 1: index--;
      case 2: index--;
      case 3: break;
      default: break;
    }
}



页: [1]
查看完整版本: 请教高手,关于C语言的 switch case语句