for循环的操作

时间:2011-10-11 10:30:06

标签: c

我在嵌入式c工作了一个月,直到现在我遇到了简单的循环,如:

for(i=0;i<10;i++)

但现在我遇到了一种新的for循环:

for(t=0; string[t]; ++t)

任何人都可以告诉我这个循环是如何工作的。 示例代码为:

#include <stdio.h>
#include <ctype.h>

void print_upper(char *string);

int main(void)
{
    char s[80];
    printf("Enter a string: ");
    gets(s);
    print_upper(s);
    printf(''\ns is now uppercase: %s", s);
    return 0;
}

/* Print a string in uppercase. */
void print_upper(char *string)
{
    register int t;
    for(t=0; string[t]; ++t)
    {
        string[t] = toupper(string[t]);
        putchar(string[t]);
    }
}

2 个答案:

答案 0 :(得分:7)

如果字符串以null结尾,则最后一个字符将为null。这评估为false。 for语法的middle子句是一个布尔表达式。如果为真,则循环继续,如果为假,则循环终止。循环索引字符串的字符t,并递增t,这意味着它依次测试每个字符以查看它是否为“true”。

因此,此语法将遍历字符串中的每个字符并在结尾处停止。

答案 1 :(得分:1)

循环有3部分

  1. t=0;初始化

  2. string[t];条件退出循环,如果string [t]是null,就像说条件为假,循环将退出

  3. ++t增量,一旦进行了一次循环,就会增加t
  4. 所以基本上,你的循环通过char检查字符串char,一旦找到空字符,就会退出