c语言中case中声明变量,C++-C/C++中为何不能在case里面声明变量呢?

这个有switch语法特性决定的, switch中每个case都是平等的层次,区别于一般的if else语句,我们知道swich的case语句可以这样写:

switch (i)

{

case 1:

case 2:

int n = 0;

break;

case 3:

break;

default:

break;

}

所以整个switch语句处在同一个代码块中,只不过有多个case语句,既然多个case在同一个代码块中,那么int n = 0;的语句就是块中局部变量,我们知道变量在编译器中编译时,是从它的定义点开始有效的,也就是说int n=0;在整个代码块中都是可见的,但又个问题这里switch语句,编译器在编译的时候有可能跳过case 2中的int n=0;定义,所以编译器才报错,当然解决这个语法错误有3种方法:

(1)case中加括号,明确声明变量的域。

switch (i)

{

case 1:

case 2:

{

int n = 0;

}

break;

default:

break;

}

(2)变量只声明不定义,只有使用的时候才去定义。

switch (i)

{

case 1:

case 2:

int n;

n = 0;

break;

default:

break;

}

(3)变量的定义放到switch的外边。

int n = 0;

switch (i)

{

case 1:

case 2:

break;

default:

break;

}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值