您的位置:首页 > 编程语言 > Go语言

使用goto实现循环,跳转语句

2014-08-31 16:23 429 查看
/*计算从0-10的和*/

do-while语句:

/*****************do while版***************/

int sum = 0;
int i = 0;
do
{
sum += i;
i++;
}
while(i <= 10);


do while 版的 goto语句实现:

int sum = 0;
int i = 0;
loop:
sum += i;
i++;
if(i <= 10)
goto loop;
done:


/*****************do while版***************/

while版本:

/*****************while版***************/

int sum = 0;
int i = 0;
while(i <= 10)
{
sum += i;
i++;
}


while版goto语句实现:

 

int sum = 0;
int i = 0;
if(!(i <= 10))
goto done;
loop:
sum += i;
i++;
if(i <= 10)
goto loop;
done:


/*****************while版***************/

for语言实现:

/*****************for版***************/

int sum = 0;
for(int i = 0; i <= 10;i++)
sum += i;


goto版的for语句:

 

int sum = 0;
int i = 0;
if(!(i <= 10))
goto done;

loop:
sum += i;
i++;
if(i <= 10)
goto loop;
done:


/*****************for版***************/

使用goto语句加深对break和continue的理解。

计算0——100内偶数的和,break版:

*****************理解break***************/

 

int sum  =  0;
for(int i  =  0 ;i  <=  100;  i++)
{
if(i % 2 == 1)
continue;
sum += i;
}


goto 版:

 

int i = 0;
int sum = 0;
if(!(i <= 100))
goto done;
loop:
if(!(i % 2 == 1))
goto lab2;/*注意跳转的条件,以及跳转到的地方,可以看出continue只是终止了本层循环*/

lab1:
sum += i;
lab2:
i++;
if(i <= 100)
goto  loop;
done:


*****************理解break***************/

下面 该理解break了。

使用上面同样的例子,不过把continue换成break。

int sum = 0;
for(int i = 0;i < 100;i++)
{
if(i % 2 == 0)
<span style="white-space:pre">	</span>break;
sum+=i;
}


  goto版:  

int i = 0;
int sum = 0;
if(!(i <= 100))
goto done;
loop:
if(!(i % 2 == 1))  /*这里可以看出直接跳出,终止循环*/
goto done;

lab1:
sum += i;
lab2:
i++;
if(i <= 100)
goto  loop;
done:
通过这两个例子,应该很清楚的明白break和continue之间的区别了,这与编译器生成汇编指令的逻辑是相同的,其实C中的goto就是汇编当中的jmp语句了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ C