以下是否会被视为不良编码习惯?
for (row = 0; row < 4; row++, printf("\n")) {
for (col = 0; col <= row; col++) {
printf("*");
}
}
答案 0 :(得分:4)
让我回答这个问题,哪个更好?
while(1) {}
或
for(;;) {}
两者都编译成相同的结果并且实际上是相同的。当您向for循环的更新部分添加任意方法调用时,您的问题也是如此。它汇编。它按预期工作。主要区别在于可读性和偏好。
我敢说,大多数程序员更喜欢将方法调用专门放在for循环体中。不是因为除了惯例之外的任何原因,所以当别人看到你的for循环时,他们不必花太多时间看循环计数器等等。你可以聪明,当然,但我会建议坚持已建立的模式所以对你的同事来说更容易。如果你喜欢那些喜欢晦涩语法的同事,那就去做吧,直到你心满意足为止!
答案 1 :(得分:3)
它不是那么容易阅读,更简单,更容易阅读和相同的方法将是:
for (row = 0; row < 4; row++) {
for (col = 0; col <= row; col++) {
printf("*");
}
printf("\n");
}
答案 2 :(得分:1)
是的,这被认为是不好的做法。我不会根据自己的主观意见做出回复(价值有限),而是引用一个得到广泛认可的权威:
MISRA-C:2004,规则13.5:
“for循环的三个语句只涉及循环 控制。“/ - /
“第三个表达式:循环计数器(i)的递增或递减。”
MISRA-C也完全禁止使用逗号运算符:它被认为既多余又危险。