【发布时间】:2018-01-25 19:23:05
【问题描述】:
我在代码中遇到了一个如下所示的 for 循环:
for ( argc--, argv++; argc > 0; argc--, argv++ )
它是如何工作的?通常for 循环如下所示:
for (initialization; condition; increment) {/*body of the loop*/}
但这不包含任何逗号 - 逗号是什么意思和作用?
【问题讨论】:
-
它仍然是一样的,只是使用
,运算符(阅读它)并且它只执行第一次递增和递减一次。可能看起来像是循环的一部分,但不是。还有什么不清楚的吗? -
为什么初始化部分看起来不像?这是
argc--, argv++。这是常规的 C/C++ 表达式。 -
initialization可以是任何表达式。它实际上不需要初始化任何东西。你可以把printf("Hello!")放在那里。condition和updation也是如此。 -
for(int i=1; i<argc; i++) { do_something(argv[i]); }的写法不称职。不幸的是,许多 C 程序员都是装腔作势的人,他们喜欢以最复杂、最模糊的方式编写代码。虽然有能力的程序员会认识到好的代码等于简单易读的代码。
标签: c++ c for-loop comma-operator