标签语法标签:
.
这个标签给本行的行尾加个名字.
还可以anExpression(); end: anotherExpression();
,但不常用.
void foo(bool condition) {
writeln("first");
if (condition) {
goto end;
}
writeln("second");
end:
writeln("third");
}
goto
代理以难以理解著称.
上面代码可重写为:
void foo(bool condition) {
writeln("first");
if (!condition) {
writeln("second");
}
writeln("third");
}
在c中,还有几种用途:
// --- C 代码 ---
int foo() {
// ...
if (error) {
goto finally;
}
// ...
finally:
// ... 清理,交资源,撤销等 ...
return error;
}
在d中都不必要.垃集,析构器,catch,finally,scope语句
,c++中也不必要.
在c中还有外部循环的问题.
// --- C 代码 ---
while (condition) {
while (otherCondition) {
continue;//内圈
break;//内圈
goto continueOuter;// 外圈'continue'
goto breakOuter;// 外圈'break'
}
continueOuter:
;
}
breakOuter:
同样的技术可用于外部switch
.goto
在d中这种用法也是不必要的,因为d
有循环标签
.c++
还需要这种方法.
if (condition) {
goto aLabel; // 跳过构造
}
auto s = S(42); // 构造
aLabel:
s.bar(); // BUG: 没定义's'
跳过构造.
编译器阻止:
Error: goto skips declaration of variable deneme.main.s
循环标签:
outerLoop:
while (condition) {
while (otherCondition) {
continue;
break;
continue outerLoop;//在外部标签继续
break outerLoop;//在外部标签处断开
}
}
即从外部标签处继续
或断开
.
switch
语句也可含标签.一个内部break
可从外部switch
点中断.
还有goto case
,跳至下例,goto default与goto case expression(跳至XX例)
,
标签语法标签:
.
这个标签给本行的行尾加个名字.
还可以anExpression(); end: anotherExpression();
,但不常用.
void foo(bool condition) {
writeln("first");
if (condition) {
goto end;
}
writeln("second");
end:
writeln("third");
}
goto
代理以难以理解著称.
上面代码可重写为:
void foo(bool condition) {
writeln("first");
if (!condition) {
writeln("second");
}
writeln("third");
}
在c中,还有几种用途:
// --- C 代码 ---
int foo() {
// ...
if (error) {
goto finally;
}
// ...
finally:
// ... 清理,交资源,撤销等 ...
return error;
}
在d中都不必要.垃集,析构器,catch,finally,scope语句
,c++中也不必要.
在c中还有外部循环的问题.
// --- C 代码 ---
while (condition) {
while (otherCondition) {
continue;//内圈
break;//内圈
goto continueOuter;// 外圈'continue'
goto breakOuter;// 外圈'break'
}
continueOuter:
;
}
breakOuter:
同样的技术可用于外部switch
.goto
在d中这种用法也是不必要的,因为d
有循环标签
.c++
还需要这种方法.
if (condition) {
goto aLabel; // 跳过构造
}
auto s = S(42); // 构造
aLabel:
s.bar(); // BUG: 没定义's'
跳过构造.
编译器阻止:
Error: goto skips declaration of variable deneme.main.s
循环标签:
outerLoop:
while (condition) {
while (otherCondition) {
continue;
break;
continue outerLoop;//在外部标签继续
break outerLoop;//在外部标签处断开
}
}
即从外部标签处继续
或断开
.
switch
语句也可含标签.一个内部break
可从外部switch
点中断.
还有goto case
,跳至下例,goto default与goto case expression(跳至XX例)
,