让我们来看一看C++ 一.对世界说你好

  如果你对一个程序员说“Hello!”的话,他很有可能会回一句“World!”。这是因为对于无数的程序员来说,他们接触的第一个程序,甚至是每一种语言的第一个程序,都是输出“Hello World!”。无论多么自命清高的程序猿,都会对这句话留下深深的印象。所以,我便不免跟随着大部队,来给大家介绍一下如何用C++来输出一个“Hello World!”。

  首先,我们先来看一段代码。

1 #include <iostream>
2 using namespace std;
3 
4 int main()  
5 {
6     cout << "Hello World!\n"; //分号是一个很重要的东西,他的用法,在你看过大量程序后,自己就会明白
7     return 0;
8 }  

  如果你之前接触过编程的话,那么看完这段代码,你可能就明白了C++一些基本的东西,但是如果你是一个纯粹的新手,你可能就会很迷茫了,这到底是个什么东西。

  无论如何,不要着急,让我给你从第一行开始慢慢来讲。

  我们先把第一句翻译成汉语:#包括 <输入输出流>。

  首先,开头这个#是一定要有的,至于为什么,我只能说这是一种规范。然后是后面的include <iostream>,iostream就是一个库,就像是一个仓库一样,他里面放有各种各样的东西,而iostream这个库里面,放置的就是向程序内输入,和向程序外输出的办法,当我们需要输入或者输出的时候,就要到仓库里看一下,有没有输入输出的方式。如果我们事先没有声明要用到这个库的话,那么当我们后面要输入输出的时候,程序就不知道怎么该怎么输入输出了。而include就是用来说明,程序内包括这个库,也就是要使用这个库了。

  然后是第二行 using namespace std;在《Essential C++》上,作者并没有找到一个很好的解释方法。为了防止这一段教程变成学院派的东西,我决定自己编造一个解释方法,如果有大神看到这坑爹的解释,但求不要打脸。

  首先,using就是用,你看到代码里,他是蓝色的,而大多东西都是黑色的(不同环境下,颜色可能会有变化)。为什么他是蓝色的那?因为他是C++官方留下的预留字,他本身就具备着一定的含义,在这里,他的目的就是告诉我们,我们要使用namespace std。

  而namespace std则是指的一块区域,namespace就是城区,std就是城区的名字,就像我们说海淀区、历城区,但是在C++里,我们要称之为区海淀、区历城。每个城区里都有一堆的仓库,不同的城区仓库不同,iostream这个仓库就在std这个城区里面。所以在说明要使用哪一个库之后,我们还要说明他在哪一个城区内,这样程序才能找到这个仓库。std区,内放着很多的仓库,里面放着一些很常用的东西,因此我们称其内的库为标准库。而namespace的正确叫法,叫做命名空间。

  为什么要把这些库分开放置呢,因为这样可以避免应用程序内两个不同的东西有同一个名字,就像是在班级里点名,一个班里有两个小明,那么就没办法直接区分了,我们只好对两个小明进行解析,所以我们把其中一个小明扔到另一个班级里,就不会发生这样的冲突了。命名空间就好像是众多名称之间竖起的一道道围墙。

  当然,还存在一些其他的点出命名空间的办法,但是,这个是最简单的。

  接下来,我们来讲第四行,我们先来看main,这个main是主函数的意思,C++把程序分成了一个个的函数,main就是最重要的函数,一个程序需要做什么,应该怎么做,都写在这个函数之中。而他前面的int是指该函数的数据类型。他既然是一个函数就肯定有函数值,C++里的函数值可以是一个数字也可以是一个字符,int是一种数字格式,他的数据范围是-2^(32-1) ~ 2^(32-1) -1。后面的括号现在我们用不到,你只需要记住需要加这个东西就好了,接下来的课程中,我会对它进行讲解。

  我们得谈一谈为什么会出现数据范围这种东西。我们在现实生活中,写一个数字需要在纸上占据一定的空间,在计算机中储存也需要占据一定的空间。但是,我们在纸上可以调节数字占用空间的大小,但是在电脑里,占用多少空间就不是那么好调整的了。所以我们便创造了好多的数据类型,每种类型占用的空间是一定的,所以他能表示的数字范围也是一定的。

  第五行和第八行的{}目的在于把程序内容框起来,告诉程序,你到哪里就不用再走了。

  第六行开始的Cout就是输出了,他后面加上<<表示输出内容“”里面框着的东西,就是要输出的东西。但是我们只会用“”框起来一串东西,如果你只想框一个东西的话,那就要用到‘’了。后面//里的东西是注释,程序会把他无视掉,他存在的目的只是为了让我们自己能看懂。

  输出这个东西是要有必要细讲一下的。

  cout <<"3 + 4 = ";

  cout << 3 + 4;

  cout << '\n';

  这样他会输出3 + 4 = 7然后换行。你发现,第二个输出没有两个引号,这是为什么那?试着看我这样讲会不会吓到你,引号内的东西,程序一般不会在意,将其直接输出。而不加括号,程序就会看一下他是不是变量或者表达式,然后输出变量和表达式对应的值。那么问题又来了,什么是变量(表达式)?变量就是一个值可以变化的量就像y=x里的y和x,我们输出的就是x或者y对应的值。而表达式就是一个式子了,C++里的表达式内涵很丰富。这个以后用到再讲。最后一个'\n'的意思是换行。输出中在\后面的东西一般都会有它特殊的意思,这就是不一般的情况了,\n的意思就是换行。之所以要这么做,是因为有些东西没办法直接输出,比如换行符('n')制表符('t'),还有引号、\,这样的会被程序误解的符号。通过前面加\,就可以完成输出了。

  输入的写法则是cin >> 。比如cin >> x 就是读入x的值。如果我们需要读入x的话,那么我们要先说明程序中要用到x这一个变量,如果x是一个数字,那么我们就要在他前面加上 int x。int x的意思和int main 差不多,但是这里的x是一个变量而非函数的名称。当然你还可以尝试一些其他的数据类型。

  最后我们只剩下一个return 0了,我前面说过函数肯定要有函数值,return 0的作用在于,返回0为函数的值,因为我们并不需要用到main的值,所以你返回几都可以,但是我们还是会习惯性的选取0作为返回值。如果程序返回的不是0,那么就说明程序没有执行成功。一般,当你漏掉这句话后,他会自动被IDE加上。

 

附录:C++基本数据类型

  类型+含义+最小存储空间(按2进制储存)如下:

  bool 布尔型

  char 字符型 8位

  wchar_t 宽字符型 16位

  short 短整型 16位

  unsigned short 无符号短整型 16位(无符号类型无法表示负数,但是正数的表示范围会大一倍)

  long 长整形 32位

  unsigned long 无符号长整型 32位

  long long 双长型 64位

  unsigned long long 无符号双长型 64为

  float 单精度浮点型 6为有效数字(浮点数可理解做小数)

  double 双精度浮点型 10位有效数字

  long double 扩展精度浮点型 10位有效数字

 

  

2014-11-13

 

posted @ 2014-11-13 15:35  Xstsow  阅读(2350)  评论(1编辑  收藏  举报