两个for语句的执行顺序是怎样执行的。

请求各位高手,很急
2024-11-28 11:46:27
推荐回答(2个)
回答1:

【问题描述】for循环是C语言中常见的循环语句,for语句括号中的部分,其执行顺序是怎样?
【解析】
for语句的结构如下所示:
for(初始化;条件;调整)
{
示例语句;
}

第一次顺序:初始化 ->条件->示例语句
第二次顺序:调整->条件->示例语句
第三次顺序:调整->条件->示例语句
...
以此类推。

【示例】
看下面一个示例:
[html] view plain copy
for(i = 0, j = -1; j = 1; j++) printf("********\n");
其输出是什么呢?不妨先推导一下,再验证自己的结论。

再看一个文本处理的例子(源码来自《系统程序员成长计划》):
[html] view plain copy
#include
#include
#include
#include

#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;
}

回答2:

这是二个并列的for 循环。
等第一个for 循环结束之后 ,再做第二个循环。