您的位置:首页 > 编程语言 > C语言/C++

C++中的常量的基础知识

2017-04-09 14:33 381 查看
常量:指在程序执行过程中值不改变的量。常量有两种表示形式,即字面常量和符号常量。字面常量的类型是根据书写形式来区分的,例如15,-2.2,'a',"hello"等都是字面常量,它们的类型分别为:整型、浮点型、字符型、字符串型,每个字面常量的字面本身就是它的值。符号常量是一个标识符,在程序中必须遵循“先声明,后使用”的原则。

》逻辑常量

逻辑类型的取值只包含两个取值:true和false,它们称为逻辑常量。

bool b=(x==y);

如果x与y相等,则b的值为true;否则b的值为false。逻辑常量主要用在逻辑运算中。此外,由于逻辑值对应着整数1或0,所以它也能够像其他整数一样出现在表达式中,参与各种整数运算。

》字符常量

简称字符,它以单引号作为起止符号,中间有一个或若干个字符。

例       ‘a’ 单引号中间有一个字符,这是一般意义上的字符常量;

           ‘\n’,'\146','\x6E'等以“\”开头的包括多个字符的字符序列也都是符合规定的字符常量。

但是,无论字符常量包含一个还是多个字符,每个字符常量只能表示一个字符,当字符常量的一对单引号内多于一个字符时,则将按照一定的规则解释为一个字符。

》转义字符

计算机中常用的ASCII字符也是字符型的数据,因为ASCII码值在0~127之间,正好落在字符型数据的取值范围之内。ASCII字符集中的每一个可显示字符(个别字符除外)都可以作为一个字符常量。但是,对于一些特殊的字符,如回车、换行等具有控制功能的字符,或者像单引号、双引号等作为特殊标记使用的字符,就无法直接采用单引号作为起止字符来表示。为了表示这些特殊字符,C++中引入了“转义”字符的概念,其含义是:用反斜线“\”引导的下一个字符失去了原来的含义,而转义为具有某种控制功能的字符。

例:“\n” 中的字符n通过反斜线的转义后就称为一个换行符,其ASCII码为10。为了表示作为特殊标记使用的可显示字符,也需要用反斜线字符引导,例如,“\‘”表示单引号字符,若直接使用“ ' ”表示单引号是不行的。

另外,还允许用反斜线引导一个具有1~3位八进制整数或一个以字母x(大小写均可)作为开始标记的具有1~2位的十六进制数,对应的字符就是以这个整数作为ASCII码的字符。

由反斜线字符引导的符合上面规定的字符序列称为转义序列,转义序列不但可以作为字符常量,也可以同其他字符一样出现在字符串中。



一个字符用于显示输出时,将输出字符本身或体现出相应的控制功能;当它在表达式中参加整数运算时,将使用它的ASCII码值。

》整型常量

整型常量就是整型常数,简称整数,它有十进制、八进制和十六进制三种表示方式。C++中的整型数据除了一般的表示方法之外,还允许给它们添加后缀u或l。对于任一种进制的整数,若后缀为字母u(不区分大小写),则规定它为一个无符号整型(unsigned int)数,若后缀为字母L(不区分大小写),则规定它为一个长整型(long int)数。在一个数的末尾,可以同时使用u和L,并且对排列无要求。

例:15U (unsigned int)     0123U (unsigned long int)       0X1abcL (long int)     1234LU (unsigned long int)

    >十进制整数

       十进制整数以正号(+)或负号(-)开头,由首位非0的一串十进制数字组成。若以正号开头则为正数,若以负号开头则为负数,若省略正负号,则默认为整数。

       整数在计算机中是有表示范围的,因此一个整数在程序中使用时会受到大小的限制。当一个十进制整数大于等于-2 147 483 648(-2^31),

       同时小于等于2 147 483 648(2^31-1)时,系统将其看做是整型常量;当在 2 147 483 648~4 294 967 295即2^32-1范围之内时,则被看做是无符号整型常量;当超过上述两个范围时,则无法用C++整数类型表示,只有把它用实数(即带小数点的数)表示才能够被有效的存储和处理。

     >八进制整数

       八进制数整数以数字0开头,后面接若干个八进制数字(借用十进制数字中的0~7)。八进制整数前面不带正负号,全部默认为整数。

       当一个八进制数大于等于0同时小于等于017 777 777 777时,称为整型常量;当大于等于020 000 000 000同时小于等于037 777 777 777时,称为无符号整型常量。不要使用超过上述两个范围的八进制整数,因为没有与此相对应的C++整数类型。

     >十六进制整数

      十六进制整数以数字0和字母x(不区分大小写)开头,后面接若干个十六进制数字(借用十进制数字0~9,字母A~F或a~f)。同八进制整数一样,十六进制整数也全部为正数。

      当一个十六进制整数大于等于0同时小于等于0x7FFFFFFF时,称为整型常量;当大于等于0x80000000同时小于等于0xFFFFFFFF时,称为无符号整型常量。超过上述两个范围的十六进制整数也没有与之相对应的C++整数类型,所以也不能使用它们。

》实型常量

实型常量简称实数,对应着数学中的实数概念。实型常量有十进制的定点表示和浮点表示两种方法。

       >定点表示

       定点表示的实数简称定点数,即以小数形式表示实数。定点表示的实数由一个正好或负号(正号可以省略)后接若干个十进制数字和小数点组成,这个小数点可以处在任何一个数字位的前面或后面。

       >浮点表示

       浮点表示的实数简称浮点数,即以小数形式表示实数。浮点表示的实数由一个十进制整数或定点数后接一个字母E(大小写均可)和1~3位的十进制整数组成,字母E之前的部分称为该浮点数的尾数,之后的部分称为该浮点数的指数,该浮点数的值就是它的尾数乘以10的指数幂。

       对于一个浮点数,若将它尾数中的小数点调整到最左边第一个非零数字的后面,则称它为规格化(或标准化)浮点数,这有些类似于数学中的科学记数法。例如41.6E8是非规格化的,4.16E9则是规格化的浮点数。

       实型常量分为单精度(float)、双精度(double)和长双精度(long double)三类。一般float型数据在内存中占4个字节,提供7位有效数字;double型数据占8个字节,提供15位有效数字;long double型数据占10个自己,提供19位有效数字。对于一个定点数或浮点数,C++自动按一个双精度(double型)来存储。若在一个定点数或浮点数之后加上字母F(大小写均可),则自动按一个单精度数来存储。

》枚举常量

        枚举常量是枚举类型中定义的值,即枚举值。枚举类型属于用户定义类型,用关键字enum表示,因此又称为enum类型。用户通常利用枚举类型定义程序中需要使用的一组相关符号常量。声明枚举类型的语法格式为:

enum<类型名>{<枚举值表>};

其中,enum是关键字,指出要定义的是枚举类型。<类型名>是标识符,即由用户给出的具体枚举类型名。<枚举值表>包含多个枚举值,它们用逗号分隔开,每个枚举值就是一个枚举常量。枚举值有两种定义形式:一是<值名>,而是<值名>=<整型常量>。

enum color{RED=1,YELLOW,BLUE};

关于enum类型有四点说明:

      >一个enum类型实际上是int类型的一个子集,其每一个枚举值代表一个整数。

      >n个枚举值全部未赋常量值时,它们自左至右分别与整数0,1,...,n-1对应。

      >若第i个枚举值赋常量值为m,则其未赋值常量的后续枚举值分别与整数m+1,m+2,...对应,直到下一个赋了值的枚举值或结束。因此,为枚举值所赋的整型常量值应从左至右递增。在上面的例子中,YELLOW与整数2对应,BLUE与整数3对应。

      >枚举类型的声明也可作为成组声明若干整型符号常量的方法。也就是说,把每个要声明的符号常量作为一个枚举值,将各个枚举值合在一起定义成一个枚举类型。

由于枚举类型属于用户定义数据类型,一旦枚举类型被定以后就可以使用它来定义变量,

例如:enum color c1,c2,c3;

其中关键字enum可以省略,color是已经定义的枚举类型,变量c1,c2,c3的取值可以是枚举值RED,YELLOW,BLUE中的任意一个。

》符号常量声明语句

        符号常量在使用之前必须先进行定义。符号常量定义语句同变量定义语句类似,其语法格式为:

        const<类型名><符号常量名>=<初值表达式>,...;

        其中关键字const指明这是一条符号常量定义语句,后面跟着符号常量的类型名,接着是符号常量名,它是一个用户定义的标识符,符号常量名之后为一个赋值号和一个初值表达式。注意,必须在声明符号常量的同时为其显示赋初值。该语句也可以定义多个符号常量。

        系统执行符号常量定义语句时,需要依次为每个符号常量非配存储单元并赋初值。一个符号常量定以后,它的值就是定义时所赋予的初值,作为常量,这个值以后将始终保持不变,因为系统只允许读取它的值,而不允许再次向它赋值。在符号常量定义语句中,若<类型名>为int,则int可以省略。

        C++关键字中的true和false就是系统预先定义的两个符号常量,它们的值分别为1和0。使用符号常量往往可以提高程序的可读性和可维护性。由于符号常量和变量同样要求系统为其分配内存单元,所以可以把符号常量视为一种不允许赋值改变的或只读不写的变量称其为const变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息