C语言中whie 和for的差别

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:49:02
这个用while
#include<stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{int i=0,n=0;
while(i<=NUM)
{n++;
printf("%d",n);
i++;
}
printf("\n");
return 0;
}

下面一个用for
#include<stdio.h>
#include<stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{int i,n;
for(i=1,n=0;i<=NUM;i++,n++)
{
printf("%d",n);
}
printf("\n");
}
我自己认为这两个程序差不多,但结果却相差甚远
还有就是第一个程序为什么会这样(12345678)的结果

从本质上来说,while和for没有太大的区别
你的程序会出现这样的结果是这样的
看第一个程序:
#include<stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{int i=0,n=0;
while(i<=NUM)
{n++; //程序运行到这里之前,n=0,当n++运行以后n=1;
printf("%d",n); //所以这里输出的每一个n都会大1,以
次类推,原来的01234567自然成
12345678
i++;
}
printf("\n");
return 0;
}

再看第二个程序:

#include<stdio.h>
#include<stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{int i,n;
for(i=1,n=0;i<=NUM;i++,n++)
{
printf("%d",n);
}
printf("\n");
}

for循环的运行特点是这样的
for(A;B;C)
{D}
首先运行A(基本是赋值),然后运行B(大多是判断),接着运行D(问题就在这里),最后运行C,然后继续BDC的顺序.

所以你程序中写到

for(i=1,n=0;i<=NUM;i++,n++)
{
printf("%d",n);
}
因为第一次循