在switch的case分支下能否定义变量?!

boick 2004-04-01 07:18:44
我在switch的case分支下定义了一个变量,但是编译通不过。但查阅手上的C教程,却没有看到有说在case分支下不能定义变量的提示。源码如下:
/*测试*/
main()
{
int i;
printf("Plass input i vlue:");
scanf("%d", &i);
printf("---------%d\n", i);
switch (i)
{
case 1:
int x;

/*printf("You Input i vlue=%d---AAA--%d\n", i, x);*/
break;
case 2:
printf("You Input i vlue=%d---BBB\n", i);
break;
default:printf("No Input Vlue\n");
}

}
...全文
289 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaoyang 2004-04-01
  • 打赏
  • 举报
回复
C中不可以的
C++中才可以啊
boick 2004-04-01
  • 打赏
  • 举报
回复
明白了,这么简单的问题老是会被忽略,要不是今天在调程序时想在case分支下做个printf变量也不会发现有这个问题存在。
BluntBlade 2004-04-01
  • 打赏
  • 举报
回复
说错了,应该是在C中应该将所有变量定义于{}区块中其它语句之前。
tuxw 2004-04-01
  • 打赏
  • 举报
回复
可以
用{}将分支括起来
括号内变量定义语句必须在最前面
moswawa 2004-04-01
  • 打赏
  • 举报
回复
在c++中可以在绝大部分{}区块内定义变量。
在C中不行
????
不行吗?
可以用一对花括号{和}把一组说明和语句括在一起构成一个复合语句(也叫分程序)
在任何分程序中都可以说明变量。

你再试试你的这个程序
main()
{
int i;
printf("Plass input i vlue:");
scanf("%d", &i);
printf("---------%d\n", i);
switch (i)
{
case 1:
 {
int x;

printf("You Input i vlue=%d---AAA--%d\n", i, x);
}
break;
case 2:
printf("You Input i vlue=%d---BBB\n", i);
break;
default:printf("No Input Vlue\n");
}

}
boick 2004-04-01
  • 打赏
  • 举报
回复
明白了,在c中变量只能在main()函数下,其他语句之前订义吗?好像在别的语句后面订议变量也不行。
BluntBlade 2004-04-01
  • 打赏
  • 举报
回复
在c++中可以在绝大部分{}区块内定义变量。
在C中不行

70,014

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧