Ok. 那刚刚呢我们跟大家介绍了各种各样的数据类型。 而且呢, 我们讲的都是用这些数据类型如何来定义变量。 那么其实啊, 对於常量也是一样的。 常量呢, 也是有数据类型的。 那什么叫常量呢? 那常量的数据类型怎么去表示呢?下面我们就来讨论一下。 所谓常量啊,顾名思义,是指啊,在程序的运行 过程中,它的值会保持不变的那些量。 啊,那么在 C 或者 C++ 中呢,常量又有两种。 一种叫做 “字面常量” 。比方说, -1, 0, 123, 4.6,-.12, 1.23, 等等这些量 只要你写在程序里面的数, 都是 “字面常量”。还有一类常量呢,叫做 “符号常量”。 就是用一个标识符来表示的一个常量。 啊,这叫 “符号常量”。就是说,我用一个标识符来代表一个不会变的数。 我们来看一个例子就知道了。那么在这个例子里头呢,是这样的。 我们需要计算圆的面积。所以说啊,我们就要用到圆周率。 那么在这儿呢,我们就定义了一个 “符号常量”。 这个符号常量的名字叫做 PI, "PI",给它付的储值是 3.14159。 怎么去定义一个 “符号常量” 呢 ?跟变量的定义啊,非常的类似。在标识符的前面指明这个 “符号常量” 的类型,比方说它是 double 型。然后在这个类型的前面再加一个关键值,叫做 const。 那么加上这个关键值之后呢, 我们就知道后面的这个 PI 表示一个 “符号常量”。 而且呢,在程序运行的过程中,PI 的值呢不能再被改变。 也就是说,只要你在第一次的时候 给它付值是多少,那么在以后整个的这个程序里头, PI 的值呢,都不会再被改变了。 那这样做有什么好处呢 ? 一个非常显而易见的好处就是说,在程序中啊,我就不用再去写 3.14159 了,省事, 而且呢,程序容易被看懂。 那还有另一个好处就是,如果我想在程序中改变这个值的话, 我只需要把这个程序翻出来,然后在最初的这个地方把付出的这个地方改变了, 那么程序里头相应的所有的地方全部都会改变。 那么写程序的效率就会提高。那么还有一个更重要的优点就是说, 一旦你定义了一个 ”符号常量”, 那么在程序里头没有任何地方可以去修改它的值。 我们可以确保这个 “符号常量” 的值在程序中不会被改变。 Ok, 这是关于 “字面常量” 和 “符号常量”。 那么,我们写的程序的 常量有没有类型呢 ?比方说,看这儿, PI = 3.14159。 我们都知道 3.14159 是一个浮点型的数。 但是,它具体是一个什么类型的浮点数呢?是个 float 型呢,还是 double 型呢? 还是 long double 型的呢?有的同学就说,那这还需要区分吗 ? 当然。因为它也是一个数。那么在程序里头,所有的数都是有类型的。 常量也一样。常量也有它的类型。那怎么去在程序里头 明确的标识一个常量的类型呢?那么在程序中啊, 常量的类型是通过常量的后缀来表示的。 什么意思呢?我们来看一个例子。 对这样的一行程序,n = 10000L, 在前一行程序中, L 就是一个后缀。它表示什么含义呢? 它表示啊,告诉计算机, 把这个前面的 10000 当作一个长整型的数来处理。那么, 在这个程序里头呢,L 既可以大写,也可以小写。 那有的同学说,那如果不写呢,我如果不写 L , 不写 L 的话,那么计算机它就把它当作一个整型的数 来处理了。类似的,我们可以做一些其它的一种标注。比方说, 对于十六进制类型的数据, 我一样可以做标注。标注 L。 那就依然告诉程序,把这个数当作一个长整型的十六进制数,啊来处理。 那么还有一些其它的后缀,比方说,U。 U 呢,就表示告诉计算机,把前面的这个数当作一个 无符号的整型数来处理。这些后缀呢,还可以联合起来使用。 比方说,比方说这样的一个数, 07777LU , 首先这个数呢以 0 开头,表示它是一个八进制的数。然后呢, 又以 L 和 U 结尾, 那就意味着呢,它要告诉程序,把这个八进制之数, 看作一个无符号型的长整型的量。这是整型。 那么这个浮点型呢,也一样。 啊,比方说,当我们写出一个数,x=3.1415 加一个 F, 那就表示,希望计算机把 3.1415 啊, 当作一个单精度的浮点数啊来考虑,来使用。 y=3.1415L , 那么这样是 L 是当作 长双精度浮点数去使用。 那么有的同学说如果不写呢 ? 不写的话,那么浮点数就默认为是 double 类型的。 就像方才我们定的这个程序,PI 呢, 等于 3.14159 , 我不写任何东西,在这个地方呢,程序就把它认为是一个 双精度类型的。那通过这个我们就可以知道,那常量啊,也是有类型的。 而且常量的类型呢,是通过这些后缀来表示的。这些后缀呢,既可以大写,又可以小写。 我们在程序中如果想强调或者说明一个常量的类型的话,我们就可以采用这样的办法来处理。 Ok, 这是关于常量。