goto语句的循环变量问题..

来源:百度知道 编辑:UC知道 时间:2024/05/26 02:09:44
#include"stdio.h"
main()
{
int sum,k;
sum=0,k=0;
loop:sum+=k; /* sum+=k 等于 sum=sum+k */
k++; /* k=k+1 */
if(k<=100) goto loop;
printf("sum=%d",sum);
getch();
}

这里k=0和k=1,结果都一样..
还有k++和++k,结果也一样..

高手解答..

sum结果就是k的累加
k=0时,sum=0+1+2+…100
k=1时,sum=1+2+…100
结果显然一样啦!

k++和++k都是k自加一,可以说是没有区别的,区别在于:
y=k++;相当于{ y=k; k=k+1;}
y=++k;相当于{ k=k+1; y=k;}

k = 0的时候
sum = 0
sum + k = 0
不变...
k++和++k单独做一条语句的时候没有区别...

1.首先k++和++k在你的程序里面的结果肯定是一样的,在你的程序里面没有体现++运算符副作用的地方,关于++运算符的副作用,简而言之就是下面两个表达式中a = k++和a = ++k计算结果中a的值不一样,前面会先将k的值赋给a,再进行++运算,后面会先计算++k的值,再赋值,你看看这个特性跟你的程序有关系么?
2.关于k=0和k=1,这只是一个巧合,假设k=0,循环会执行101次,即是0+1+…+100=5050,反之k=1,循环执行100次,即是1+2+…+100=5050,一样