请教高手,关于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中的变量不能用 -> 吗?谢谢。 原来是因为 -> 符号是给指针用的。
惭愧,发了个垃圾帖子…… switch(ex.a)
{
case 0: index--; break;
case 1: index--; break;
case 2: index--; break;
case 3: break;
default: break;
} 语法规范,没有为什么 ->是神马意思啊??????? 改成指针变量就可以了:
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]