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

常量:指在程序执行过程中值不改变的量。常量有两种表示形式,即字面常量和符号常量。字面常量的类型是根据书写形式来区分的,例如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变量。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2022/12/29 第二章 知识表示方法 人工智能-知识表示方法全文共87页,当前为第1页。 2022/12/29 内容简介 2.2 一阶谓词逻辑表示法 2.3 产生式表示法 2.4 框架表示法 2.6 面向对象表示法 6 2 3 4 2.1 概述 1 2.5 语义网络表示法 5 人工智能-知识表示方法全文共87页,当前为第2页。 2022/12/29 2.1.1 知识 知识定义 Feigenbaum Bernstein 知识与信息不一样,知识信息经过加工整理、解释、挑选和改造而形成。简单地说,知识是经过加工的信息。 知识是由特定领域的描述、关系和过程组成的。 Hayes-Roth 知识是事实、信念和启发式规则。从知识库的观点看,知识是某领域所涉及的各有关方面的一种符号表示。 Bacon 知识就是力量 人工智能-知识表示方法全文共87页,当前为第3页。 知识 总之,可以认为知识是经过加工的信息,它包括事实、信念和启发式规则。 2022/12/29 人工智能-知识表示方法全文共87页,当前为第4页。 2022/12/29 2.1.1 知识 事实 规则 是关于对象和物体的知识,常以"…是…"的形式出现。事实是静态、可共享、可公开获得、公认的知识,位于知识库的底层 有关问题与事物的行动、动作相联系的因果关系知识,是动态的,常以"如果…那么…"形式出现。特别是启发式知识属于专门经验知识。 控制 有关问题的求解步骤、技巧性知识,告诉怎么做一件事。 元知识 有关知识的知识,是知识库的高层知识。例如,怎样使用规则,解释规则、校验规则、解释程序结构等知识。 它可以决定哪一个知识库适用。 知识要素 人工智能-知识表示方法全文共87页,当前为第5页。 2022/12/29 2.1.1 知识 北京是国的首都;太湖在苏州的西边 怎样制作松鼠桂鱼;手机维修法。 微分方程刻划了一个函数的行为。 例如 燕子低飞;南京是江苏省的省会。 谜语"山叠叠而不高,路遥遥而不远,雷轰轰而不雨,雪飘飘而不寒"--(石磨) 一个计算机辅助教学系统要知道用户理解的程度; 事实性知识 过程性知识 行为性知识 知识分类 实例性知识 类比性知识 元知识 人工智能-知识表示方法全文共87页,当前为第6页。 2022/12/29 2.1.2 知识表示 选取知识表示的因素 表示知识的范围是否广泛 是否适于推理 是否适于计算机处理 是否有高效的求解算法 能否表示不精确知识 知识表示的分类 陈述性知识表示:将知识表示与知识的运用分开处理,在表示知识时,并不涉及如何运用知识的问题,是一种静态的描述方法。如学生统计表。 过程性知识表示:将知识表示与知识的运用相结合,知识包含于程序,是一种动态的描述方法。如转置矩阵的程序隐含了专职矩阵的知识。 知识表示的定义 可看成是一组事物的约定,以把人类知识表示成机器能处理的数据结构。对知识进行表示的过程就是把知识编码成某种数据结构的过程。 能否在同一层次上和不同层次上模块化 知识和元知识能否用统一的形式表示 是否适合于加入启发信息 过程性表示还是说明性表示 表示方法是否自然 返回 人工智能-知识表示方法全文共87页,当前为第7页。 2022/12/29 2.2 一阶谓词逻辑表示法 一种重要的知识表示方法,它以数理逻辑为基础,是到目前为止能够表达人类思维和推理的一种最精确的形式语言。它的表现方式和人类自然语言非常接近,它能够被计算机进行精确推理。 一阶谓词逻辑表示法 人工智能-知识表示方法全文共87页,当前为第8页。 相关概念 2022/12/29 2022/12/29 命题逻辑 命题逻辑就是研究命题和命题之间关系的符号逻辑系统。通常用大写字母P、Q、R、S等来表示命题。如: P:今天下雨 P是命题的名或命题标识符 命题常量:命题标识符表示一个确定的命题。 命题变元:命题标识符只表示任意命题的位置标志。当命题变元P用一个特定的命题取代时,P才能确定真值,这时称为对P进行指派。 命题的分类 原子命题:不能分解成更简单的陈述语句。 复合命题:由联结词、标点符号和原子命题等复合构成的命题。 命题逻辑 所谓命题就是具有真假意义的陈述句。如"今天下雨"、"1+100=101",真或假用符号T或F表示。 人工智能-知识表示方法全文共87页,当前为第9页。 语法 2022/12/29 2022/12/29 2022/12/29 (1) 命题常元和命题变元是命题公式,也称为原子公式。 (2) 如果P、Q是命题公式,那么~P、P Q、P Q、P Q和P Q也是命题公式。 (3)只有有限步引用(1)、(2)条款所组成的符号串是命题公式。 5个联结词的优先级顺序为:~、 、 、 、 。 命题公式 命题符号包括以下几种 (1) 命题常元: True(T)或False(F

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值