第一章 开始
1.2 初始输入输出
cout << "Enetr two numbers :" << endl;
①
<< 运算符 :即,向流中写数据。
上面这段代码其实并不简单。
<< 运算符 接收两个运算对象。左侧的运算对象必须是一个 ostream 对象。右侧的运算符就是要打印的值。此时运算符把给定的值写到给定的 ostream 对象中。输出运算符的计算结果就是其左侧运算对象 ostream 。
这个输出语句用了两个 <<运算符 ,因为上面讲了,此运算符左侧必须是一个***ostream对象***,由于计算结果是左侧的运算对象ostream。所以第二个 <<运算符 才可以这么使用。
上面的代码可看成
(cout << "Enetr two numbers :") << endl;
②
endl 被称为操纵符的特殊值。
写入endl的效果是结束当前行,并将与设备相关联的缓冲区中的内容刷到设备中。有点像flush。保证产生的输出都真正写入输出流中。而不是仅停留在内存中等待写入流。
Tips: 默认情况下,读 cin 会刷新***cout*** ,程序非正常终止时也会刷新 cout 。
cin >> a >> b;
①
>>运算符 和 <<运算符<< 很相似。即返回的是一个***istream对象***
上面的代码可以看成
(cin >> a) >> b;
1.3 注释简介
C++注释有两种。
-
/ / 单行注释,这种注释没什么要求。
-
/ ***** ***** / ** 界定符注释,这种要注意。界定符注释是不能嵌套**的。
界定符注释注意分清首位。P9 练习1.8
1.4 控制流
1.4.3 读取数量不定的输入数据
void e1(){
int sum=0, value=0;
while(std::cin >> value){
sum += value;
}
std::cout << "Sum is " << sum << std::endl;
}
注意上面代码中while的条件。cin 返回的并不是Bool值,而是***istream*** 对象。只不过当他作为条件时,其效果是检查流的状态。
-
如果流是有效的,即流没有遇到错误,就检测成功。
-
如果遇到EOF或者无效输入的时候,istream对象的状态就会变为无效。处于无效状态的istream对象会使条件变为假。
1.5 类介绍
点运算符(.) 只能类类型使用(类,- -结构体算不算?- -)。
调用运算符( () ),就是圆括号,起到调用函数的效果。调用函数使用,平日里以为就是函数名带的一个括号。