在C中的switch语句中重新声明变量

时间:2013-11-24 01:16:45

标签: c variables switch-statement local-variables

我使用的switch语句基本上是这样的:

switch (command):
case '+':
   int key;
   scanf("%i", &key); 
   //do stuff
   break;
case '-':
   int key;
   scanf("%i", &key);
   //do stuff
   break;
....

似乎我不允许在案例阶梯中重新声明int key,即使它们作为单独的操作块而破坏。我收到编译错误redeclaration of 'key' with no linkage所以我只是使用key而没有再次进行类型转换。该计划似乎运行正常。

这可以接受吗?这样安全吗?

1 个答案:

答案 0 :(得分:4)

这不合法,因此不安全。但它很容易修复。只需在switch语句中使用块来限制声明的范围:

switch (command):
case '+': {
   int key;
   scanf("%i", &key); 
   //do stuff
   break;
}
case '-': {
   int key;
   scanf("%i", &key);
   //do stuff
   break;
}