使用cout语句执行while循环
Do while loop with a cout statement
所以我有一个关于do
/while
循环的一般问题。我正在学习C++,我知道你可以写这样的东西:
do{
....
} while(a<10 && cout<<"message");
关键是,我知道这在c++中是可能的,但我们真的这么做了吗?我的意思是,"cout
"的东西在里面的时候?
while循环等效于
do {
...
cout << "message";
while(a < 10 && cout);
因为CCD_ 4再次返回CCD_。那么,问题是,写这样的语句意味着什么
while( cout );
或
if (cout) ...
cout
对象具有到布尔值的转换,此处使用该转换。它的实现是检查!fail()
,所以
if (cout) ...
相当于
if (!cout.fail()) ...
和
do { ... }
while(cout);
相当于
do { ... }
while(!cout.fail());
最后,如果流未能产生输出,则fail
返回true。
事实是有些人会这样做(即运行函数作为条件评估的一部分)。这在shell脚本中是有意义的,但如果您不使用shell脚本,有时会不清楚某些函数的返回值是什么。我无法告诉你<"message"会立即返回,但我知道如果你把它写在循环体中,它会做我想做的事情,如果我不使用它,它会"丢弃"返回值。
为了编写其他人(包括你未来的自己)能够理解的更干净的代码,我只会评估明显返回true/false的条件,而不是不同语言中可能不同的"0/not-0"或"0/1"。
最重要的是,让编译器为您提高效率,为其他人而不是编译器编写代码。
如果您想在测试条件后执行输出,您需要这样做,或者在循环中添加另一个条件测试并维护这两个测试,这是一个等待发生的错误。
do {
if (a < 10)
cout << "message";
} while (a < 10);
然而,在任何情况下都很少看到cout <<
本身,因为你通常可以假设它会成功,除非你的机器着火了。
另一方面,提取算子>>
通常属于条件内部;
while (cin >> x)
是惯用的C++。
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- while循环中while循环的时间复杂度是多少
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 擦除while循环中迭代的元素
- 为什么我不能在 while 循环中创建线程?
- 退出简单while循环时出现问题
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 嵌套While循环不起作用(C++问题)
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 使用 GMP 的 while 循环出现问题
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 为什么在 while 循环中返回表达式不起作用
- 如何使用 do while 循环确定最高值和最低值
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- OpenCV QT,显示视频的帧(不使用while循环)
- 在 while 循环中使用 pow() 函数 C++
- C++ 制作/命名不初始化的向量(在 while 循环中)
- std::getline没有在while循环中重新请求用户输入