【问题标题】:C++ while loop with 2 conditions, VS. for loop with 2 conditions? [closed]C++ while 循环有 2 个条件,VS。 for循环有2个条件? [关闭]
【发布时间】: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


【解决方案1】:

这两个循环在性能上没有区别,除了:

for() 检查条件,如果为真,则执行其主体。所以for 类似于while 循环。

do-while 循环的工作方式略有不同:它执行然后检查,因此至少可以确保执行。

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2022-12-13
    • 2020-07-06
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 2017-11-30
    相关资源
    最近更新 更多