第一感受——标准输出流
这是我们第1小节写的Hello
World程序代码:
//---------------------------------------------------------------------------
#pragma hdrstop
#include <iostream>
#include <cstdlib>
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
//输出对世界的问候:
std::cout << "Hello world!" << std::endl;
std::system("pause"); //让程序暂停
return 0;
}
//--------------------------------------------------------------------------- |
(第1小节的代码:hello\ch1)
第5小节:标准输出流
std::cout << "Hello world!" << std::endl;
<<
是两个连续的小于号,当然,它不是中文的书名号:《。
<<
在此处,事实上也是一个函数。为什么要说“也是”呢?第一因为前面已经说过一些有关“函数”的事;第二则是因为<<函数看上去和别函数调用有些不同;这些我们暂且放过。只需回忆起“函数”对应的就是“事情”这个事实即可。
<<在这里所做的事情,
就是:将其右边的数据,输出给它左边的对象,然后继续形成一个左边的对象。比如:
std::cout << "Hello
world!"
这前半句,是将右边的“Hellow
world!”这段字符串,输出给左边std::cout。并且继续返回一个std::cout。std::cout是什么呢?在这里它代表控制台下屏幕。因此,这个过程所完成的,看得到的事情是在屏幕上输出一句“Hello
World!”。当然不包括英文的双引号。因为""在C++里一个主要用途是用来表示字符串的开始的结束。接下来,这半句话还完成另一件看不到结果,那就是它又重新得到一个std::cout。于是后半段语句将成为:
std::cout <<
std::endl;
这后半句将std::endl输出到std::cout所代表的屏幕,std::endl是什么呢?在C++标准库里,它被定义为一个换行符,也就是在屏幕上将光标挪到新的一行。
如果你对 std::cout << "Hello world!" << std::endl
这样一句完整的句子,必须从左到右渐进式分析这种操作感觉有些生疏,不妨回忆一下小学算术所学的推算。
7 - 2 - 3
问:如何计算该式,小学生可以回答:
1)首先算出7-2得5。
2)然后算出5-3得2。
这个过程其中的“5”,就是由7-2计算得出的。详细地说,7是一个数,2也是一个数,7-2得到新的一个数:5,于后续过程类似。
为什么小学生不先计算2-3呢?因为他不懂得负数?非也……
正确原因是:当优先级相同时,就先左后右嘛。-是个运算符,它的运算规则是将其左的被减数,减去其右的减数,得到一个差,这个差仍然是一个数。
<<
是一个模拟的运算符(实际上是个函数),它的运算规则是将其右的数据输出到其左的对象;然后继续得到其左的对象。所以,模拟一下运算过程:
std::cout << "Hello world!" << std::endl;
1)首先去运算:std::cout << "Hello world!" 。运算结果:屏幕上输出“Hello world!”,并且得到std::cout。
2) 然后运算:std::cout << std::endl。运算结果:屏幕输出换行,并且仍然得到std::cout(但此时运算已结束,所以得到的std::cout没有再次派上用场)。
作业:
- 将程序改成输出中文:“你好世界!”。
- 让屏幕输出两行字:
Hello
World!
|