教程 - 软件 - 文章 - 论坛

::白话C++课程::

第一感受——标准输出流

这是我们第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没有再次派上用场)。


作业:

  1. 将程序改成输出中文:“你好世界!”。
  2. 让屏幕输出两行字:

Hello

World!

 

版权所有 谢绝复制。作者:南郁(nanyu) www.d2school.com