将一个方法调用放在for循环中被认为是不好的做法?

时间:2012-03-15 09:00:04

标签: c

以下是否会被视为不良编码习惯?

for (row = 0; row < 4; row++, printf("\n")) {
    for (col = 0; col <= row; col++) {
        printf("*");
    }
}

3 个答案:

答案 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也完全禁止使用逗号运算符:它被认为既多余又危险。