第二章 数据类型、运算符和表达式

0x 考试内容要求


  1. 掌握C++的数据类型
  2. 解常量定义
  3. 掌握常量的用法
  4. 掌握运算符种类以及其优先级和结合性
  5. 熟练掌握表达式

1x C++语言的数据类型


C++中每个变量或者常量都需要拥有自己的一种数据类型

C++将数据类型分为三种:

  • 基本数据类型
  • 构造类型(导出数据类型)
  • 自定义类型

 

1x.1 基本类型

  • 逻辑型——bool
    • BOOL布尔型,用0,1来表示逻辑真假
    • 只拥有个值:truefalse分别用1、0表示

  • 字符型——char
    • 取值范围:ASCII,扩充ASCII
    • 占用一个字节,即8位
    • ASCII中的字符和整数具有对应关系
    • 取值范围:0~255

  • 整型——int
    • 16位机,占2个字节;32位机占4个字节
    • 取值范围为:-32768~32767

  • 浮点型——floatdouble
    • 单精度浮点型(float)占4个字节;
    • 双精度浮点型(double)占8个字节;

  • 空类型——void
    • 表示取值为空
    • void *p表示指向类型不明确

1x.1.1 基本类型的派生类型

  • 基本类型的派生类型是指——基本类型的字长及其取值范围可以放大缩小,改变后的类型

  • 派生类生命符由基本类型关键字面前加上修饰符组成
    • short——缩短字长
    • long——加长字长
    • signed——有符号类型,取值类型包括正负值
    • unsigned——无符号类型,取值范围只包括正值
      Tip:该规则并不可以应用于全部基本类型具体请参照下表,图片来源:见水印



1x.1.2 常量

常量是指在程序执行过程中值不改变的量。
有两种表示形式:字面常量和符号常量。

字面常量

  1. 逻辑常量
    • 有两个值:TrueFalse
    • 分别用1、0表示
    • 可以参与算数运算

  2. 字符常量
    • 简称字符:以单引号作为起止符号
    • ASCII是字符范围落在字符型类型的范围内,所以也是字符常量(个别字符除外)
    • 转义字符:用反斜杠“\”引导的下一个字符,失去了原来的含义,而转义成了别的意义
    • 允许反斜杠一道一个具有1至3位的八进制数或以x开始标记的1至2位十六进制

  3. 整型常量
    • 十进制整数:整数和负数-231~231-1
    • 八进制整数:以数字0开头,全部默认为正数
    • 十六进制整数:以数字0和字母xX开头
    • 整型数表示允许后面添加后缀uU来表示无符号和lL来表示长整型
  4. 实型常量
    • 定点表示:用小数形式表示实数,小数点可以出在任何一个数字为的前面或者后面
      甚至.01 -.012都是合法的
    • 浮点表示:以指数形式表示
      • 由一个十进制整数后接一个字母Ee和一个1~3位的十进制整数组成,E/e前面的称为尾数,E/e后面的称为指数。
      • 该浮点数的值等于尾数乘以是的指数幂
  5. 枚举常量
    • 枚举属于用户定义类型,用enum表示
    • 用来定义程序中的需要使用的一组相关符号常量
    • 声明枚举类型的语法格式
        enum <类型名>{<枚举值1>,<枚举值2>...}//这里的枚举具有顺序性
    
    • 说明
      • 一个枚举类型是int类型的一个子集,每一个枚举值代表着一个整数(默认从0开始,依次加一以表示枚举值的顺序性)
      • 若第i个枚举值常量值为m,则后续的枚举值分别与m+1 m+2对应向前对应为m-1

符号常量

  • 由用户定义,定义方法有两种,一种为预编译器的#defined或使用conts关键字。

1x.1.3 变量

  • 变量是程序中用于存储信息的单元,它对应于内存中的某段存储空间。
  • 定义变量需要说明变量的数据类型和名字
  • 数据类型说明为变量分配多少的内存空间
  • 变量名可以代表存储空间,因此程序能在变量中存储值和取出值
  1. 变量的定义
    1. 定义的格式:
      储存类 变量类型 变量名=初始化值/初始表达式;
      • 默认储存内类为auto
      • 若未赋初值,则变量的值不确定
      • 可以定义多个变量,各个变量之间用逗号运算符,分开
    2. 变量名的命名规则:
      • 必须是一个合法的C++标识符
      • 不能使用C++关键字
  2. 变量的使用方法
    1. 全局变量和局部变量
      • 全局变量——在所有函数定义、类定义和程序块之外声明的变量
      • 若没有初始化,系统会自动为其赋值为0
        (这里就和局部变量的自动初始化区别开来)
      • 在程序的任何一个函数、类或者程序块之外都能访问全局变量
      • 局部变量——在某个函数定义、类定义和程序块之类声明的变量
      • 局部变量只能在声明它的局部范围内被访问
    2. 生存期和作用域
      • 生存期——指从一个变量被声明且分配内存开始,直到该变量声明语句失效,它占用的内存空间被释放为止
        • 全局变量——从声明开始,知道程序结束为止
        • 局部变量——从声明开始,到包含它的最近的一个程序块结束为止
      • 作用域——指变量名可以代表该变量储存空间的范围
      • 一般来说,变量的作用域与其声明周期是一致的
        可以使用动态分配空间的方法来控制变量的声明周期
    3. 变量的存储类属性
      C++根据存储方式的不同将存储类别划分为4类:
      • auto变量——自动变量,为变量声明时的默认储存类别
      • register变量——寄存器变量,建议编译器以寄存器作为存储空间
      • static变量——静态变量,声明周期延续到程序的总之,默认赋初始值为0
      • extern变量——外部变量,通常用于多个文件组成的程序中,多个文件同时被声明指向同一个变量。
    4. typedef类型说明
      使用关键字typedef可以为已有类型名定义一个新类型名,为了提高代码的可读性。
      其格式为:
      typedef [已有类型名] [新类型名]
      
    5. 符号常量声明语句
      • 声明语句格式:
          const [类型名] [符号常量名] = 初值表达式
      
      • 必须在声明符号常量的同事为其赋初值
      • 符号常量的值为常量,以后这个值始终保持不变。不能再次赋值
      • 若类型名为int则可以省略类型名
      • 适当使用可以提高的程序的可读性和可维护性

2x 运算符和表达式


  1. 运算符和表达式的概念
    • 运算符可以分为:运算符、操作数、表达式
    • 运算符可以分为:单目运算符,双目运算符,三目运算符(只有一个? :
    • 运算符可能是一个字符、两个字符、三个字符或者是关键字
  2. 运算类型和运算符
    • 每一种运算符和其他运算符之间的区别:
      • 参与运算的运算数的数量和类型
      • 运算结果的数据类型
      • 运算的具体操作:一个运算符有至少一种运算
    • 有些运算符不只有一个含义:* &
  3. 赋值运算
    • 格式:[变量名] = [表达式],其中=为赋值运算符
    • 具体操作:先计算右端表达式的值,该值赋值给左端变量
    • 赋值表达式
      • 若右两端运算数类型不同,右边类型转换为左边类型
      • 使用=可以使实现连续性赋值
      • 运算顺序为:从右到左
      • 复合赋值表达式
        += -=等等
  4. 算术运算符和算术表达式
    • 算术运算符的种类:
      • 单目运算符 - ++ --
      • 双目运算符 + - * / %
      • 增量运算符
        空白| 自增 | 自减 |作用
        ------- | ----- | -------
        前置 | ++i | --i |变量i先加(减)1,然后再执行其他操作
        后置 | i++ | i-- |变量i先执行其他操作,再加(减)1
    • 算术表达式
      表达式中各种数值型数据间的混合运算
      在进行运算时,不同的数据类型要先转换成为同一种类型,然后进行运算,该转换由系统自动执行,转换规则如下图:

      图片来源于网络

      例如double-(int/float/double)结果为double型

 

转载于:https://www.cnblogs.com/JerryOu/p/8570729.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值