我以为:
if (true)
{execute this statement}
那么如何if (std::cin >> X)
当没有什么“真实”的时候,执行为 true 吗?我可以理解如果是的话if ( x <= y)
or if ( y [operator] x )
,但是“istream = true”是什么样的逻辑?
答案取决于标准 C++ 库的版本:
- C++11之前的内部转换
if
依赖于将流转换为void*
using operator void*
- 从 C++11 开始,转换依赖于operator bool of
std::istream
注意std::cin >> X
不仅是一个陈述,也是一个表达。它返回std::cin
。 “链接”输入需要此行为,例如std::cin >> X >> Y >> Z
。当您将输入放入if
:结果流被传递到operator bool
or operator void*
,因此布尔值被输入到条件中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)