注册 登录
编程论坛 C++教室

goto语句的使用问题

xunxunmimi 发布于 2008-07-10 08:58, 2353 次点击
下面的语句是程序中的一段
...
goto end;

int a=5;

end : ;
...

产生如下错误:
initialization of 'a' is skipped by 'goto end'

但是若goto 与 end: 语句之间没有变量的定义,只有其它语句时,就不会产生错误,
不知道为什么。
2 回复
#2
mqh213642008-07-10 09:15
编程语言好像有这么个规定: 凡是在程序中出现的变量都应该被初始化。 你这样虽然出现了a,但是它的定义却没有被执行到,是不行的。就好象这样:
程序代码:

if (i == 1)
{
    int a = 1;
}
else
{
    int b = 1;
}

也会报错一样。

如果我说得有错误,请大家指正。谢谢!
#3
xunxunmimi2008-07-13 10:22
谢谢回复。但是我试过了,以下代码并没有错,
if (i == 1)
{
    int a = 1;
}
else
{
    int b = 1;
}
我又发现一种情况,当case 语句中的含有变量定义的代码段被包含在一对 大括号 中,或者 case 语句中的变量定义
出现在 switch-case 语句之前时,就没有错。
比如:
int a;
int i=8;
switch(i)
{
case 3:
    a=5;
    a+=4;
   break;
case 8:
   ;
   break;
}
就没有错误。
或者
int i=8;
switch(i)
{
case 3:
  {
    int a=5; //变量定义包含在大括号中
    a+=4;
  }
   break;
case 8:
     ;
     break;
}
也无错
1