我见过
for(;;)
Run Code Online (Sandbox Code Playgroud)
和
for ( ; *s != '\0'; s++)
Run Code Online (Sandbox Code Playgroud)
为什么这样空白.谢谢.
Nul*_*ion 22
该for声明的作用如下:
for (initialization; test-condition; update)
并且可以省略这三个中的任何一个或全部(留空).所以:
for (;;)是一个无限循环1相当于while (true)因为没有测试条件.实际上,for (int i=0; ;i++)也是一个无限循环1.
for ( ; *s != '\0'; s++)是一个没有初始化的循环.s将指向(可能)一个字符串的开头并递增,直到它到达'\0'表示字符串结尾的空字符.这实质上意味着循环遍历字符串的所有字符s
1如果break循环体中有声明,或者调用exit()等等,循环仍将被中断...
它是"像那样的空白",因为代码的作者留空了.作者不希望/需要在for声明的相应部分中做任何事情,所以它留空了.
for (;;) 是一个无限循环的语句(除非它从循环体内部中断).
for ( ; *s != '\0'; s++)是一个不需要初始化部分的语句,因为必要的所有内容(如初始值s)已经在该for语句之前初始化.
for(;;)是一个无限循环。它实际上与while (true).
这样做的原因是因为当for循环中的中间条件为空时,它被解释为始终为真。
for ( ; *s != '\0'; s++)用于逐个字符读取字符串。这种方法有效,因为每个 C 字符串都以空字符 ( \0)结尾。