c - 在 for 循环的增量语句而不是 for 循环的主体中递增阶乘是一种好习惯吗?

标签 c for-loop coding-style factorial readability

我想知道在 for 循环而不是 for 循环的增量语句中递增阶乘是否是一种好的做法?

下面显示了在增量语句中乘法递增的阶乘:

for(Count = 1; Count <= 10; Factorial *= Count, Count++);

另一种方法是在 for 循环体内递增阶乘:

for(Count = 1; Count <= 10; Count++)
{
    Factorial *= Count;
}

由于 for 循环中的第三个参数用于递增,以这种方式递增是好的还是坏的实践/代码风格?我相信它在可读性方面没有任何折衷 + 通过节省一些空间来整理代码,虽然它不会改变程序的结果,但以这种方式使用 for 循环是否有任何负面影响?

最佳答案

不要将循环体移动到循环头中。

将循环组件分为循环体和循环头大大提高了可读性。

您的读者只需快速浏览第二个代码片段,就能从循环的控制(其他所有内容)中分辨出循环的“有效负载”(即 Factorial *= Count)。您的第一个代码片段会让您的读者挠头几秒钟,然后他们才意识到 (1) for 循环末尾有一个分号,以及 (2) 循环的有效负载在标题中。

编译器可能会在两种情况下生成相同的代码这一事实根本不应该成为一个因素。

关于c - 在 for 循环的增量语句而不是 for 循环的主体中递增阶乘是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46867584/

相关文章:

c - 赋值中的类型不兼容,为什么我不能这样做?

c - #define 在 c 中的行为

python - 构造一个数组列表的列表?

javascript - 合并 json-object 并填充下一个/上一个项目

c - 使用父指针从二叉搜索树中删除节点

c - Mageia-Linux x86_64 错误 : exec shell C code with static compilation

javascript - 将 JSON 数据插入 Sqlite/webSQL 数据库

java - 我应该把@Transactional注释: at an interface definition or at an implementing class?放在哪里

c++ - 比较指针与 NULL 的编码标准

c - 输出是什么? C语言编程