由“使用istream对象作为条件判断”所引发的一些问题

1 #include <iostream>
2 int main()
3 {
4     int sum = 0, value;
5     while (std::cin >> value)
6         sum += value; // equivalent to sum = sum + value
7     std::cout << "Sum is: " << sum << std::endl;
8     return 0;
9 }

 

while的条件,std::cin >> value  ,它具有从标准输入读取下一个数并且将读入的值保存在 value 中的效果。输入操作符返回其左操作数。

/*------------------------ 华丽的分割线 ----------------------------*/

关于操作符,有一点还要注意:

  C++ 中,每个表达式都会产生一个结果,通常是将操作符作用到其操作数所产生的值。当操作符是输出操作符时,结果是左操作数的值。也就是说,输出操作返回的值是输出流本身。

既然输出操作符返回的是其左操作数,那么我们就可以将输出请求链接在一起(这也是我们通常选择的写法)。
  std::cout << "Enter two numbers:" << std::endl;
  这样的语句等价于
  (std::cout << "Enter two numbers:") << std::endl;

因为((std::cout << "Enter two numbers:"))返回其左操作数 std::cout,所以,这条语句也等价与
  std::cout << "Enter two numbers:";
      std::cout << std::endl;

而 endl 是一个特殊值,称为操纵符,(注意你没有看错,这个不是操作符!)将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区。通过刷新缓冲区,用户可立即看到写入到流中的输出。

/*------------------------ 华丽的分割线 ----------------------------*/

while 条件测试输入操作符的返回结果,意味着测试 std::cin

当我们使用 istream 对象作为条件,结果是测试流的状态。(人工擦汗-ing,之前我竟然没注意到这个,看来今天又长知识了!O(∩_∩)O哈哈~)

如果流是有效的(也就是说,如果读入下一个输入是合法有效的)那么测试成功。遇到文件结束符或遇到无效输入时,如读取了一个不是整数的值,则 istream 对象是无效的。处于无效状态的 istream 对象将导致条件失败。

 

 

转载于:https://www.cnblogs.com/yshl-dragon/archive/2013/03/07/2947857.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值