引子:
像下面的一个for循环打印,他的 内外层循环判断 for( : : )是怎么执行的呢 ,如果按照错误的想法,可能就会多执行一次或者少执行一次,导致数组下标越界之类的问题。
#include <stdio.h>
int main(){
int a;
for(a=0;a<5;a++){
printf("%d",a);
}
return 0;
}
二:语句最简形式为:for( ; ; )
for(单次表达式;条件表达式;末尾循环体)
{中间循环体;}
执行顺序为:
首次执行时,首先执行单次表达式,然后判断条件表达式是否成立,不成立则停止执行。条件表达式成立的话,再执行中间循环体,最后执行末尾循环体。
之后的循环,首先执行末尾循环体,判断条件表达式是否成立,不成立则停止执行;成立的话,继续执行中间循环体,再执行末尾循环体,直到不满足条件表达式,退出循环。
按照以上的代码就应该是
for(a=0;a<5;a++){
printf("%d",a);
}首次执行时:先执行a=0;再判断a是否满足 a<5 ,(不满足,则停止)满足,那么执行中间循环体 printf("%d",a);
之后循环 先执行末尾循环体 a++ ,在判断a是否满足 a<5 ,(不满足,则停止)满足,那么执行中间循环体 printf("%d",a);