我正在学习C ++,我遇到了以下代码:
int n, g;
while(cin >> n >> g) // <--------------
// ... snip ...
标记线的含义是什么?这是否意味着“当n大于或等于g”时?并且cin&gt; = n?
答案 0 :(得分:4)
“&GT;&gt;” 中是输入流运算符。该代码试图从标准输入流中读取两个整数。
http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/
答案 1 :(得分:3)
while (expr) body
为真(-ish), body
就会执行expr
。那么cin >> n >> g
实际上做了什么?
cin
是标准输入流。通常是某人用键盘输入的东西。我们可以使用>>
operator提取此流的值。所以cin >> n;
读取整数。但是,(cin >> variable)
的结果是对cin
的引用。因此
我们可以再次使用>>
以便从流中获取更多值:cin >> n >> g
。
这相当于cin >> n; cin >> g;
。所以我们现在知道cin >> n >> g
从输入流中获取两个整数值并返回对cin
的引用。但是,如果你没记错的话,我说while语句中的表达式必须是真的。输入流如何才是真的?
嗯,有一个operator for that too。它调用另一个名为good
的函数,如果流处于良好状态,则返回true
,如果不是,则返回false
。只要我们可以对它进行操作,流就处于良好状态。当我们到达流的时,我们就再也无法从中获取值了(我们在最后,对吧?)因此状态不是吗?好了。
此时,while中的表达式求值为false。
TL; DR :在没有剩余值或操作失败之前需要两个整数值。