/*计算从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语句了。