C++入门很轻松(微课超值版)
上QQ阅读APP看书,第一时间看更新

3.1 使用常量

微视频

在程序中,有些数据是不需要改变的,也是不能改变的。因此,我们把这些不能改变的固定值称为常量。

3.1.1 认识常量

常量是固定值,在程序执行期间不会改变。常用的常量包括整型常量、浮点型常量、字符常量和字符串常量等。在程序中,常量可以不经说明而直接引用。

【实例3.1】编写程序,在屏幕中输出不同类型的常量数据(源代码\ch03\3.1.txt)。

    #include <iostream>                     //头文件引用
    using namespace std;                    //命名空间
    int main()                              //主函数
    {
        cout <<2021<<endl;                  //执行输出整型常量
        cout <<3.1415<<endl;                //执行输出实型常量
        cout <<'a'<<endl;                   //执行输出字符常量
        cout <<"Hello World!"<<endl;        //执行输出字符串常量
    }

程序运行结果如图3-1所示。cout是输出流,实现向屏幕输出不同类型的数据,其中3.1415也被称为实型变量。

图3-1 例3.1的程序运行结果

3.1.2 整型常量

在C++语言中,整型常量就是指直接使用的整型常数,例如0、15、-20等。整型常量可以分为长整型、短整型、符号整型和无符号整型,如表3-1所示。

表3-1 整型常量数据类型

☆大牛提醒☆

根据不同的编译器,整型的取值范围是不一样的,有可能在16位的计算机中整型就为16位,在32位的计算机中整型就为32位。

在编写整型常量时,可以在常量的后面添加“l”或“u”来修饰整型常量,若添加“l”或“L”则表示该整型常量为“长整型”,如“17L”;若添加“u”或“U”则表示该整型常量为“无符号型”,如“17u”;这里的“l”或“u”不区分大小写。

所有整型常量可以通过三种形式进行表达,分别是十进制、八进制、十六进制,并且各种数制均有正(+)负(-)之分,正数的“+”可省略。例如,0、-12、255、1、32767等都是整型数据。

(1)十进制:包含0~9中的数字,但是一定不能以0开头,如15,-255。

(2)八进制:只包含0~7中的数字,必须以0开头,如017(十进制的15)、0377(十进制的255)。

(3)十六进制:包含0~9中的数字和a~f中的字母,以0x或0X开头,如0xf(十进制的15)、0xff(十进制的-1)、0x7f(十进制的127)。

以下是各种类型整数常量的实例。

    85        /* 十进制 */
    0213      /* 八进制 */
    0x4b      /* 十六进制 */
    30        /* 整数 */
    30u       /* 无符号整数 */
    30l       /* 长整数 */

☆大牛提醒☆

整型数据是不允许出现小数点和其他特殊符号的。另外,在计算机中,整型常量以二进制方式存储;在日常生活中,数值的表示以十进制为主。

3.1.3 实型常量

C++语言中实型常量也被称为浮点型常量。它有两种表示形式:一种是十进制小数形式,一种是指数形式。

(1)十进制小数形式:由数码0~9和小数点组成。例如,0.1、25.2、5.789、0.13、5.8、300.5、-267.8230等均为合法的实数。注意,必须有小数点。

(2)指数形式:由十进制数加字母“e”或“E”及阶码(只能为整数,可以带符号)组成,这里的E代表指数10。例如,2.8E5、3.9E-2、0.1E7、-2.5E-2等。

☆大牛提醒☆

科学记数法要求字母e(或E)的两端必须都有数字,而且右侧必须为整数,因此e3、2.1e3.2、e是错误的。

【实例3.2】编写程序,在屏幕中输出实型常量(源代码\ch03\3.2.txt)。

    #include <iostream>            //头文件引用
    using namespace std;           //命名空间
    int main()                     //主函数
    {
        cout <<3.1415<<endl;       //执行输出浮点数3.1415
        cout <<-3.1415<<endl;      //执行输出浮点数-3.1415
    }

程序运行结果如图3-2所示。从结果可以看出,直接输出的数值都没有发生变化,这些数值都是实型常量。

图3-2 例3.2的程序运行结果

3.1.4 字符常量

字符常量是用单引号“'”括起来的一个字符,一个字符常量在计算机中占一个字节,例如'a'、'b'、'='、'+'、'?'都是合法的字符常量。字符常量的值为所括起的字符在ASCII表中的编码,所以字符和整数可以互相赋值。例如,字符“a”的ASCII码值为97,字符“A”的ASCII码值为65,字符“?”的ASCII码值为63。

在C++语言中,字符常量有以下特点。

(1)字符常量只能用单引号括起来,不能用双引号或其他括号。

(2)字符常量只能是单个字符,不能是字符串。

(3)字符可以是字符集中任意字符,但数字被定义为字符型后就不能参与数值运算。如'5'和5是不同的,'5'是字符常量,不能参与运算。

ASCII码表中还有很多通过键盘无法输入的字符,可以使用“\ddd”或“\xhh”来引用这些字符。“\ddd”是1~3位八进制数所代表的字符,“\xhh”是1~2位十六进制数所代表的字符。例如,“\101”表示ASCII码“A”,“\XOA”表示换行等。

【实例3.3】编写程序,输出ASCII码表中的部分字符(源代码\ch03\ 3.3.txt)。

    #include <iostream>        //头文件引用
    using namespace std;       //命名空间
    int main()                 //主函数
    {
        cout <<"A"<<endl;
        cout <<"\101"<<endl;
        cout <<"\x41"<<endl;
        cout <<"\052,\x1E"<<endl;
    }

程序运行结果如图3-3所示。

图3-3 例3.3的程序运行结果

除了正常显示的字符外,还有一些控制符是无法通过正常的字符形式表示的,如常用的回车、换行、退格等。因此,C++语言还使用了一种特殊形式的字符常量,这种特殊字符称为转义字符。例如上述代码中\101、\x41为转义字符。

使用转义字符时是以反斜杠(\)代表开始转义,后跟一个或几个字符的特定字符序列。它表示ASCII字符集中控制字符、某些用于功能定义的字符和其他字符,不同于字符原有的意义,故称为“转义”字符。常用的转义字符如表3-2所示。

表3-2 常用的转义字符

【实例3.4】编写程序,在命令行中输出字符常量与转义字符(源代码\ch03\3.4.txt)。

    #include <iostream>                          //头文件引用
    using namespace std;                         //命名空间
    int main()                                   //主函数
    {
        cout <<"Hello\tWorld\n\n"<<endl;         /*输出Hello   World并换两次行*/
        cout <<" a,A\n"<<endl;                  /*输出a,A并换行*/
        cout <<"123\'\"\n "<<endl;               /*输出123、单引号和双引号,最后换行*/
    }

程序运行结果如图3-4所示。

图3-4 例3.4的程序运行结果

3.1.5 字符串常量

字符串常量是由一对双引号括起的字符序列。例如,"Hello World"、"C program"、"3.14"等都是合法的字符串常量。字符串常量和字符常量是不同的量,它们之间主要有以下区别。

(1)字符常量由单引号括起来,字符串常量由双引号括起来。

(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。

(3)可以把一个字符常量赋予一个字符串变量,但不能把一个字符串常量赋予一个字符变量。

☆大牛提醒☆

在C++语言中没有相应的字符串变量,但可以用一个字符数组来存放一个字符串常量,在后面的章节中会详细介绍。

(4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"\0"(ASCII码为0),它是字符串结束的标志。

例如,字符串"C program"在内存中所占的字节可以表示为如下所示的样式。

字符常量'a'和字符串常量"a"虽然都只有一个字符,但在内存中的情况是不同的。字符常量'a'在内存中占一个字节,可表示为如下所示的样式。

字符串常量"a"在内存中占两个字节,可表示为如下所示的样式。

【实例3.5】编写程序,在命令行中输出字符串常量(源代码\ch03\3.5.txt)。

    #include <iostream>                     //头文件引用
    using namespace std;                    //命名空间
    int main()                              //主函数
    {
        cout <<"Hello World!"<<endl;       /*输出Hello World!并换行*/
        cout <<"Hello,dear!"<<endl;       /*输出Hello,dear!*/
    }

程序运行结果如图3-5所示。

图3-5 例3.5的程序运行结果

3.1.6 其他常量

除前面介绍的普通常量外,常量还包括布尔常量、枚举常量、宏定义常量等。

(1)布尔常量:布尔常量只有两个,一个是true,表示真;一个是false,表示假。注意,不能把true的值看成1,false的值看成0。

(2)枚举常量:枚举型数据中定义的成员也都是常量。

(3)宏定义常量:通过#define宏定义的一些值也被称为常量。例如:

    #define PI 3.1415

其中,PI就是常量。