有几本书向我展示了如何正确编写 for、while 和 do 循环。 许多在线文章将它们相互比较。
但我还没有找到任何地方告诉我什么不该做。例如,如果我在循环中更改计数器或条件变量的值,它会把事情搞砸吗?
我想要一个不依赖于机器的答案。
最佳答案
是的,您可以在一个循环中更改计数器,它有时非常有用。例如,在解析命令行参数时,有一个选项标志后跟一个值。下面显示了一个示例:
输入以下命令:
program -f filename -o option -p another_option
代码:
#include <string.h>
int main(int argc, char** argv)
{
char *filename, *option, *another_option;
if(argc > 1){
for(int i=1; i<argc; i++){
if(strcmp(argv[i],"-f")==0){
filename = argv[++i];
} else if(strcmp(argv[i],"-o")==0){
option = argv[++i];
} else if(strcmp(argv[i],"-p")==0){
another_option = argv[++i];
} else {
printf("Option \"%s\" not recognized, skipping\n",argv[i]);
continue;
}
}
} /* end if argc > 1 */
return 0;
}
示例程序自动递增计数器以访问正确的命令行字符串。当然有一些方法可以合并计数器等,但在这种情况下它们只会使代码更加繁琐。
正如其他人所指出的,这是许多人编写错误的地方,在循环内递增计数器时必须小心,特别是当循环以计数器值为条件时。
关于C 循环-可以在循环内更改计数器或条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808469/