新手简单问题:while的跳出条件

今天看到一个实现多组输入的代码:
int n;
while(cin>>n)
{...}
while括号里的表达式不是应该结果是bool类型吗?为何可以是输入语句呢?那它又如何跳出呢?
难道输入的数是0才跳出循环?
问题可能比较傻。但是查不到,只好向各位高手求教.

阅读 3.9k
2 个回答

该代码会一直循环测试输入流是否正常,直到输入流到达文件末尾,或者输入流出错。

  1. while括号里的表达式不是应该结果是bool类型吗?为何可以是输入语句呢?

    while括号中的表达式的确是bool类型,所以你可以纠结一下 `cin >> n`这个表达式的返回值到底是什么(`>>`正常读取,返回的是cin的地址值;读入错误时,则返回0)
  2. Q: 那它又如何跳出呢?难道输入的数是0才跳出循环?

    跳出循环的两种输入方式:
    windows下 `ctrl+z`
    linux下 `ctrl+d`
    

恩。。。。其实我也是一知半解,但我比较纠结的是你所说的“查不到”,如果你是真的查不到答案,我想分享一下我的体验。
首先呢,对于像我这样的资深小白来说,一直坚信着:只有想不到的小白题,没有查不到的答案。
然后咧,就有啥查啥呗,比如这道题,你可以随意摆渡一下 while(cin>>n),就会发现一堆你想要的答案(eg.啥时候能跳出循环);
再然后,像你这样已经不只是纠结于什么时候能停,而考虑起关于表达式值的问题,完全可以去查whilecin >> n的返回值,看看到底暗藏什么玄机。
小白伸手党很容易做的,不过显然不如自己一层一层抽丝剥茧地去追溯一个问题来得有趣(这个话是用来鼓励我自己的XD)

另分享一个挺棒的答案:cin,cout,以及其返回值

图片描述
图片描述

楼上正解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题