首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

goto语句有关问题

2012-03-31 
goto语句问题这段代码用goto语句为何不会出错这问题很无聊,纯属研究,因为一直不懂原因C/C++ code#include

goto语句问题
这段代码用goto语句为何不会出错
这问题很无聊,纯属研究,因为一直不懂原因

C/C++ code
#include <iostream>using namespace std;/*int main(){    int a=1;    int a=1;   //该语句会编译错误,因为定义了两次a    cout<<a<<endl;    return 0;}*/int main(){start:    int a=1;    cout<<a<<endl;    goto start;    //可通过编译}


[解决办法]
定义语句只在编译时生效,在目标代码里是不存在的。所以goto上去一点问题也不会有,因为根本就没有执行重复的定义。

要是使用解释执行,那里就会出错了。不过C/C++不是解释执行的。
[解决办法]
变量定义是编译的时候干的,你把int a;放在start:前或者start:后是完全一样的。只有一个a,不会因为你放在start:后面就循环出好几个a来。局部变量分配空间是函数一开始执行你写的任何语句之前干的。
[解决办法]
地址是一样的。你可以输出变量a的地址看看。
变量分配地址,之后只是取出变量的值吧!
我的理解。
[解决办法]
探讨

引用:

定义语句只在编译时生效,在目标代码里是不存在的。所以goto上去一点问题也不会有,因为根本就没有执行重复的定义。

要是使用解释执行,那里就会出错了。不过C/C++不是解释执行的。


那返回上去之后定义的a和原来的a的地址也是一样的吧?

热点排行