首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

for话语的执行顺序

2012-11-26 
for语句的执行顺序【问题描述】for循环是C语言中常见的循环语句,for语句括号中的部分,其执行顺序是怎样?【解

for语句的执行顺序

【问题描述】for循环是C语言中常见的循环语句,for语句括号中的部分,其执行顺序是怎样?

【解析】

for语句的结构如下所示:

for(初始化;条件;调整)

{

示例语句;

}

 

第一次顺序:初始化 ->条件->示例语句

第二次顺序:调整->条件->示例语句

第三次顺序:调整->条件->示例语句

...

以此类推。

 

【示例】

看下面一个示例:

for(i = 0, j = -1; j = 1; j++) printf("********\n");

其输出是什么呢?不妨先推导一下,再验证自己的结论。

 

再看一个文本处理的例子(源码来自《系统程序员成长计划》):

#include <ctype.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#define IS_WORD_CHAR(c)(isalpha(c) || isdigit(c))typedef void (*OnWordFunc)(void* ctx, const char* word);int word_segmentation(const char* text, OnWordFunc on_word, void* ctx){enum _State{STAT_INIT,STAT_IN_WORD,STAT_OUT_WORD,}state = STAT_INIT;int count = 0;char* copy_text = strdup(text);char* p = copy_text;char* word = copy_text;for(p = copy_text; *p != '\0'; p++){switch(state){case STAT_INIT:{if(IS_WORD_CHAR(*p)){word = p;state = STAT_IN_WORD;}break;}case STAT_IN_WORD:{if(!IS_WORD_CHAR(*p)){count++;*p = '\0';on_word(ctx, word);state = STAT_OUT_WORD;}break;}case STAT_OUT_WORD:{if(IS_WORD_CHAR(*p)){word = p;state = STAT_IN_WORD;}break;}default:break;}}if(state == STAT_IN_WORD){count++;on_word(ctx, word);}free(copy_text);return count;}


 代码第42行,将*p='\0',但循环并不会因此结束,因为先进行了p++调整。

 

 

转载请标明出处,仅供学习交流,勿用于商业目的

Copyright @ http://blog.csdn.net/tandesir

 

热点排行