我在嵌入式c工作了一个月,直到现在我遇到了简单的循环,如:
for(i=0;i<10;i++)
Run Code Online (Sandbox Code Playgroud)
但现在我遇到了一种新的for循环,它是:
for(t=0; string[t]; ++t)
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我这个循环是如何工作的.示例代码是:
#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]);
}
}
Run Code Online (Sandbox Code Playgroud)
如果字符串以null结尾,则最后一个字符将为null.这评估为false.for语法的middle子句是一个布尔表达式.如果为真,则循环继续,如果为假,则循环终止.循环索引t字符串的字符,并递增t,这意味着它依次测试每个字符以查看它是否为"true".
因此,此语法将循环遍历字符串中的每个字符并在结尾处停止.