博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
由“使用istream对象作为条件判断”所引发的一些问题
阅读量:6040 次
发布时间:2019-06-20

本文共 1214 字,大约阅读时间需要 4 分钟。

1 #include 
2 int main()3 {4 int sum = 0, value;5 while (std::cin >> value)6 sum += value; // equivalent to sum = sum + value7 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

你可能感兴趣的文章
HDU 1325 Is It A Tree? 判断是否为一棵树
查看>>
Shell命令-文件压缩解压缩之gzip、zip
查看>>
个人总结
查看>>
uva 673 Parentheses Balance
查看>>
Bzoj 2252: [2010Beijing wc]矩阵距离 广搜
查看>>
css 禁止选中文本
查看>>
bzoj2165
查看>>
算术运算表达式正则及分析
查看>>
Oracle 12c 多租户 手工创建 pdb 与 手工删除 pdb
查看>>
shell初涉
查看>>
[浪子学编程][MS Enterprise Library]ObjectBuilder之创建策略祥解(二)
查看>>
windows添加和删除服务
查看>>
关于云栖,有点无语的几个地方,管理能不能管?
查看>>
Windows线程的同步与互斥
查看>>
C#进阶系列——MEF实现设计上的“松耦合”(四):构造函数注入
查看>>
AngularJs ng-change事件/指令(转)
查看>>
linux系统下安装两个或多个tomcat
查看>>
ProtoBuffer 简单例子
查看>>
iOS多线程开发系列之(一)NSThread
查看>>
微信小程序初体验(上)- 腾讯ISUX社交用户体验设计成员出品
查看>>