查看了很多资料都说:goto到标签以后就按照顺序执行,这个标签只是一个跳转地址跟作用域真没什么关系。但是goto有作用范围,文件内。(我想应该是正确吧!)
可是我发现 C Primer Plus 中文第五版 181 页的例子:
(1) if(size > 12)
goto a;
goto b;
a: cost = cost * 1.05
flag = 2;
b: bill = cost * flag;
书上说等效于:
if(size > 12)
{
cost = cost * 1.05;
flag = 2;
}
bill = cost * flag;
按照网上的理论(goto到标签以后就按照顺序执行):为什么不是?
if(size > 12)
{
cost = cost * 1.05;
flag = 2;
bill = cost * flag;
}
bill = cost * flag;
(2) if(ibex > 14)
goto a;
sheds = 2;
goto b;
a: sheds = 3;
b: help = 2 * sheds;
书上说等效于:
if(ibex > 14)
sheds = 3;
else
sheds = 2;
help = 2 * sheds;
同理,按照网上的理论(goto到标签以后就按照顺序执行):为什么不是?
if(ibex > 14)
{
sheds = 3;
help = 2 * sheds;
}
else
sheds = 2;
help = 2 * sheds;
DIEA
ibeautiful