C++语言程序设计(郑莉)02 C++基本数据类型和表达式

  • 字符集
  • 词法记号
    • 关键字
    • 标识符:字母数字下划线构成,字母下划线开头
    • 文字????
    • 操作符
    • 分隔符
    • 空白
  • 基本数据类型
    • 标准只规定相对大小顺序
    • 一般用int,通常具有最高的处理效率
    • char并没有规定默认情况下是有符号的还是无符号的,char, signed char, unsigned char 是三种不同的数据类型
    • 每一种数据类型都包括了数据本身的属性以及对数据的操作,定义一个变量同时限定了对变量的操作
  • 常量
    • 直接使用符号(文字)表示的值
    • 整型常量
      • 十进制不能以0开头,八进制以0开头
      • 八进制和十六进制形式的整型常量一般用来表示无符号整数,前面不应带正负号
      • 后缀L表示长整型,后缀U表示无符号型
    • 实型常量
      • 指数形式,整数部分和小数部分可以省略其一,但不能都省略,如.123E-1,12.E2都是正确的,但不能写成E-3这种形式
      • 默认double型 
    • 字符常量
      • 一般字符'a',不可显示字符\n
      • \nnn八进制形式   \xnnn十六进制形式
      • 字符中的单引号要用转义序列表示
    • 字符串常量   
      • 字符串中的双引号要用转义序列表示
      • 末尾\0
      • 字符'a'和字符串"a"内存是不同的
    • 布尔常量
  • 符号常量
    • const
    • 声明时必须赋初值,之后不能被赋值
  • 变量
    • 需要用名字标识的
    • 变量的声明和定义
      • 声明类型和定义
      • 声明不一定引起内存分配,定义意味着给变量分配内存空间,变量名就是对内存单元的命名,多数情况下声明与定义同时进行
      • 变量地址的内存位置,与变量定义的位置直接相关
      • 没有字符串变量,字符串类存储字符串
    • 变量的存储类型
      • auto 存储类型:采用堆栈方式分配内存空间,属于暂时性存储,其存储空间可以被若干变量多次覆盖使用。
      • reglster 存储类型:存放在通用寄存器中。
      • extern 存储类型 z 在所有函数和程序段中都可引用。
      • static 存储类型:在内存中是以固定地址存放的,在整个程序运行期间都有效。
  • 运算符与表达式
    • 算术
      • %只能用于整型操作数,优先级与/相同
      • i=1,i++表达式的结果为2,但是结果要被用来继续参与其他操作时情况不同
    • 赋值
      • 表达式的值为等号左边对象被赋值后的值
      • <<=    >>=     &=    ^=      |=
    • 逗号
      • 表达式1,表达式2
      • 先求解1,再求解2,最终结果为表达式2的值
    • 逻辑
      • 比较
        • 优先级相同(较高)   <(小于),<=(小于或等于) ,>(大于),>=(大于或等于),
        • 优先级相同(较低〉 == (等于),!=(不等于)
      • 逻辑
        • 高 ——>低         ! (非)        &&(与)       ||(或)
        • &&和||短路
          • 运算效率
          • 第二个操作数的运算与否,可能会使某些值发生变化,例如 (a==b)||(++c==1)
    • 条件
      • 唯一的三元运算符?
      • 表达式 l? 表达式 2: 表达式 3
      • 表达式 1 必须是 bool 类型,表达式 2 , 3 可以是任何类型,且类型可以不同。
      • 条件表达式的最终类型为 2 和 3 中较高的类型
      • 条件表达式的执行顺序为:先求解表达式 1 。若表达式 1 的值为 true时,则求解表达式2 ,表达式 2 的值为最终结果;若表达式 1 的值为 false ,则求解表达式 3 ,表达式 3 的值为最终结果。
      • 条件运算符优级高于赋值运算符,低于逻辑运算符。结合方向为自右向左。
    • sizeof运算符
      • 不对括号内的表达式本身求值
    • 位运算
      • 对数据按二进制位进行操作,操作数必须是整数
      • 按位与&
        • 将操作数中的若干位置0
        • 取操作数中的若干位置
      • 按位或|
        • 将操作数中的若干位置1
      • 按位异或^
        • 将操作数中的若干指定位翻转,如果某位与0异或,结果是该位的原值,如果某位与1异或,结果与该位原来的值相反
      • ​​​​​​​按位取反~
        • ​​​​​​​单目运算符
      • ​​​​​​​​​​​​​​​​​​​​​移位
        • ​​​​​​​移位运算符左边的操作数是需要移位的数值,右边的操作数是左移或右移的位数。
        • 左移是按照指定的位数将一个数的二进制值向左移位。左移后,低位补 0,移出的高位舍弃。
          右移是按照指定的位数将一个数的二进制值向右移位。右移后,移出的低位舍弃。
          如果是无符号数则高位补 0; 如果是有符号数,则高位补符号位或补 0
    • ​​​​​​​运算符优先级与结合性

    •  
    • 混合运算时数据类型的转换
      • 隐含转换
        •  算术运算和关系运算:低类型转换为高类型
        • 类型越高,范围越大,精度越高
        • 低——>高  char short int unsigned long unsigned long float double
        •  逻辑运算全部转换成bool型
        • 赋值运算一律将右值转换为左值的类型
      • 显式转换
        • 类型说明符(表达式)   //C++风格的显示转换符号
        • (类型说明符)表达式   //C风格的显示转换符号
        • const cast< 类型说明符:> (表达式)
        • dynamic cast< 类型说明符:> (表达式)
        • reinterpret cast< 类型说明符:> (表达式)
        • static cast< 类型说明符:> (表达式)
        • 显式转换可能是不安全的,高类型转换为低类型数据精度会受损
        • 转换时暂时的,一次性的
  • 语句语句
    • 没有赋值语句和函数调用语句,赋值与函数调用通过表达式实现
    • 表达式可以作为另一个更复杂表达式的一部分,而表达式语句不能
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值