当前位置:  开发笔记 > 编程语言 > 正文

for循环中没有检查条件,但循环仍然终止C++

如何解决《for循环中没有检查条件,但循环仍然终止C++》经验,为你挑选了1个好方法。

我在C++中有这个程序有一个简单的for循环,for循环没有检查条件:

for (std::string a_word; std::cin >> a_word;) {
  // code goes here
}

// Code after the loop

我编译它们并在终端上运行,当我按下Ctrl + D(EOF)时,for循环然后停止并在循环后运行代码,虽然没有检查条件,有人可以解释引擎盖下发生了什么吗?



1> Vlad from Mo..:

你误会了.循环中有一个条件

for (std::string a_word; std::cin >> a_word;) {
                         ^^^^^^^^^^^^^^^^^^
  // code goes here
}

它是

std::cin >> a_word;

for语句的这一部分中的任何表达式(或声明)都在上下文中转换为type bool.

来自C++标准(6.4选择语句)

    ...作为表达式的条件的值是表达式的值,对于除switch之外的语句,上下文转换为bool ;

在C++ Standatrd中为流定义了显式运算符

explicit operator bool() const;

返回!fail().

表达式std::cin >> a_word;返回引用,std::cin并应用上面显示的转换运算符.

所以当你按下Ctrl + D然后fail()返回true并且loop(!fail())的条件等于false.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有