【发布时间】:2018-02-25 00:29:14
【问题描述】:
如果我想遍历一个字符串,并在找到字母“o”或字符串结尾时停止,那么使用 while 循环来检查 2 个条件或 for 循环会有什么不同吗?有2个条件?
const int STRING_SIZE = 16;
char str[STRING_SIZE] = "a bunch of words";
for循环
for (int i = 0; i < STRING_SIZE && str[i] != 'o'; i++){
//do something
}
while 循环
int i = 0;
while (i < STRING_SIZE && str[i] != 'o'){
//do something
i++
}
两者之间有性能差异吗?一种做法比另一种更好吗?
【问题讨论】:
-
不,不会有任何性能优势
-
没有性能差异,但循环在语义上不同,会产生不同的结果。
-
我认为
while循环更可取,因为它是循环的约定,将继续进行未知次数的迭代,而for循环适用于迭代次数为(或可以)事先知道。这是风格问题,而不是性能问题。 -
循环之间只有一个区别:
for就像while(consdition)首先被评估然后如果成功则执行。无论条件如何,do-while至少执行一次。 -
我不知道为什么我在示例中使用了 do-while 循环(已更改),但忽略了这一点,是否会比另一个更受欢迎?
标签: c++ performance loops coding-style