【发布时间】:2017-10-17 09:57:17
【问题描述】:
我目前在德国学习计算机科学,但之前曾参与过几个 C/C++ 开源项目。 今天我们在学校从 C 开始,我的老师说在循环中修改 for 循环变量是不行的,我完全同意。但是,我经常使用没有最后递增部分的 for 循环,然后在循环内仅对其进行修改,这也是他不喜欢的。
所以基本上归结为
for(int i=0; i<100;) {
[conditionally modify i]
}
对
int i=0;
while(i<100) {
[conditionally modify i]
}
我知道它们在编译后本质上是一样的,但我不喜欢使用 while 循环,因为:
- 通常的做法是将变量限制在尽可能小的范围内
- 如果您重用 i 可能会引入错误(因为范围较大,您必须这样做)
- 如果不使用不同的名称,您不能在以后的循环中为 i 使用不同的类型
是否有任何样式指南/常见做法可供选择?
如果您回答“我喜欢一段时间/更多”,请至少说明您这样做的原因。
我确实已经搜索过类似的问题,但是,我找不到这个案例的任何真正答案。
【问题讨论】:
-
对于使用 for 循环没有“硬性规定”。如果您需要它,请使用它。不过,请检查是否有一些标准库方法的算法首先解决了潜在问题。 (这里主要从 C++ 迭代器循环 POV 说起,该标签已被删除。)
-
smh 我不喜欢
[conditionally modify i]部分。如果条件从未满足怎么办? -
“我的老师说在循环中修改 for 循环变量是不行的,我绝对同意”:你问你的老师他为什么这么认为所以?你为什么同意他的观点?
-
@Techy 为什么要为一个 C 问题标记一个 java 骗子?
-
至少您没有要求我们在
while(1)和for(;;)之间进行选择。然后你就会有一场真正的火焰战争。