初步式是什么东西

初始式是什么东西?本帖最后由 shendaowu 于 2013-07-03 20:09:33 编辑这个词出现的段落:标号(label)的作用

初始式是什么东西?
本帖最后由 shendaowu 于 2013-07-03 20:09:33 编辑 这个词出现的段落:
标号(label)的作用域是它所在的那个函数。这就意味着你能够利用goto跳进或者跳出一个块。仅有的限制就是你不能跳过初始式,也不能跳进异常处理程序。
这个译者经常将一些有通用的翻译的词翻译成别的东西,不知道这个是不是又是这样。
异常处理程序就是catch后面的那段吧?我刚才试了一下,确实不能跳进去。
-----------------
又试了一下,try后面的也不能跳进去,这个异常处理程序指的是try+catch么?
-----------------
又试了一下,这个也会报错:

#include <iostream>

using namespace std;

int main()
{
    
    goto I_want_to_go_here;
    
    bool xx = true;
    while ( xx )
    {
    I_want_to_go_here:
        xx = false;
    }
    
   return 0;
}


但是跳到
{
}
里面不会报错。
[解决办法]
它的意思可能是说,不能用goto跳过某一对象的初始化代码却到达这个对象的作用域内:


goto label_a;//这句是未定义行为
goto label_b;//这句可以。

  {
      string text("I am a text.");
label_a:
      cout << text << endl;
   }
label_b:
...



如果不考虑那两个大括号,只要跳转的范围越过了一个对象的初始化代码,就必然会“越过初始化而到达某对象的作用域”。
[解决办法]
就是初始化。
明显是翻译的问题。
goto不能路过初始化代码,基本语法。