字符数组可以用作switch语句的表达式吗?

时间:2011-09-28 04:35:11

标签: c

void main()
{
  char name[20];

  printf("\n enter Your Name: ");
  gets(name);

  switch(name)
  {
    default : printf( "Invalid" );
  }

  getch();
}

所以我的问题:是一个char数组OR简单数组在表达式中对switch有效,如果有效,那么案例值是什么?

5 个答案:

答案 0 :(得分:4)

switch语句使用字符数组的地址作为参数。所以没有它不会像你期望的那样工作。

它遵循的原因与您不能将字符串放入交换机并期望它工作的原因相同。 (与字符串比较相同)

答案 1 :(得分:4)

不,标准说

  

switch语句的控制表达式应该是整数   类型。

在你的情况下,将采用字符串的地址,在这方面不被视为整数。

答案 2 :(得分:2)

不,你不能。您将需要创建一个字符数组(字符串)数组。搜索它们以转换为整数(索引到该数组中)并使用它。

答案 3 :(得分:1)

我不敢。要比较字符串/字符数组,您必须使用其他一些函数,例如'strcmp'。 如果您真的想使用switch-case结构,可以将每个字符串映射到不同的整数并按其切换。这是DEMO

答案 4 :(得分:0)

如果你问它的有效性,是的,它是有效的,编译器很乐意编译。但是,编译器不会比较内容(字符串中的字符),而是比较指针值。