为什么在将变量a赋值之前打印此goto? 他应该在判罚后叫b吗?
#include <iostream>
using namespace std;
int main(){
int a;
b:cout << a << endl;
cin >> a;
goto b;
return 0;
}
答案 0 :(得分:3)
它首先输出,因为那是您编码的方式。您正在呼叫cout <<
之前先呼叫cin >>
。
标签不会更改代码流,它只是标记允许goto
跳转到的位置。对于您的情况,在声明a
之后执行cout >>
,然后执行cin <<
,然后依次执行cout <<
和cin >>
,依此类推。
您真的根本不应该使用goto
。大多数开发人员通常不认为它是代码设计中的不良做法。请改用常规循环,例如:
#include <iostream>
using namespace std;
int main(){
int a;
while (cin >> a) {
cout << a << endl;
}
return 0;
}
答案 1 :(得分:1)
确保它像您应该的那样工作。
#include <iostream>
using namespace std;
int main(){
int a;
b:
cin >> a;
cout << a << endl;
goto b;
return 0;
}
答案 2 :(得分:1)
它执行该行,并在运行时稍后有一个goto引用。因此它仍将在cout之前打印,因为这是您定义的方式。标签不会删除代码,只会删除控件。