C语言 goto使用问题
在 if 判断中使用goto, 当条件不成立的时候, goto语句也会被执行吗?为什么?
源代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 1;
for(i; i <5 ; i++) {
printf("%d\n" , i);
if(i > 10)
{
goto TiaoChu;
}
}
TiaoChu:
printf("程序结束\n");
return 0;
}
输出结果:
1
2
3
4
程序结束
if判断没有成立, goto语句也被执行了。goto语句总会被执行吗?
最好不要用goto语句,想跳出循环的话可以使用break语句; Dijkstra说过代码质量可以看goto语句的数量,越多越差。 我怎么觉得没有执行goto 我觉得你这个问题问的真的很蠢,你那是条件不成立才执行的GOTO吗,你那是FOR执行完了,顺行执行的..... goto只是起到一个转跳位置的作用,for结束了代码往下走,并没有执行goto 没有执行,你把 程序结束 那句话放到上面去看看就明白了,如果执行了goto那么它会跳上去执行的。 不要用goto了解一下作用就可以了 你的i不满足当然不执行,虽然goto叫无条件跳转,但是你也要能执行到goto这一条语句啊
你这个goto是没有执行的。你的循环条件是i < 5,所以输出了 1 2 3 4,你在for里面的判断if(i > 10)是没有进入过的。当for执行完毕,会继续往下走,走到你的TiaoChu标号的位置,然后继续执行你的printf语句。goto只是无条件跳转,但是程序里面的语句还是会顺序执行的。你可以试试把if(i > 10)改成if(i > 3)你就可以看到会输出两次 程序结束 了。
页:
[1]
2