编程菜鸟到大佬之路:C++程序设计(四)

第二章 C++简单程序设计

运算与表达式


算术运算与赋值运算

  • 算术运算

    • 基本算术运算符
            • /(若整数相除,结果取整);
      • %(取余,操作数为整数)。
    • 优先级与结合性
      • 先乘除,后加减,同级自左至右。
    • ++, --(自增、自减)。
  • 赋值运算

    • 将值赋给变量;
    • 赋值运算符“=”;
    • 赋值表达式:
      • 用赋值运算符连接的表达式;
      • 表达式的值指的是赋值运算符左边对象被赋值后的值;
      • 表达式的类型指的是赋值运算符左边对象的类型;
    • 复合的赋值运算符
      • +=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。

逗号运算、关系运算、逻辑运算和条件运算

  • 逗号运算和逗号表达式

    • 格式:表达式1,表达式2。
    • 求解顺序及结果
      • 先求解表达式1,再求解表达式2;
      • 最终结果为表达式2的值。
  • 关系运算与关系表达式

    • 关系运算是比较简单的一种逻辑运算,优先次序为:
      • > >= < <= 优先级相同(高);
      • == != 优先级相同(低)。
    • 关系表达式是一种最简单的逻辑表达式,其结果类型为 bool,值只能为 true 或 false。
  • 逻辑运算与逻辑表达式

    • 逻辑运算符
      • !(非) &&(与) ||(或)
      • 优先次序:高 → 低
    • 逻辑运算结果类型为 bool,值只能为 true 或 false 。
    • &&(逻辑与)运算
      • && 的运算规则
        • 两侧表达式都为真,结果为真;
        • 有一侧表达式为假,结果为假。
      • && 的短路特性
        • 表达式 1 && 表达式 2
        • 先求解表达式1;
        • 若表达式1的值为 false,则最终结果为 false,不再求解表达式2;
        • 若表达式1的结果为 true,则求解表达式2,以表达式2的结果作为最终结果。
    • ||(逻辑或)运算
      • || 的运算规则
        • 两侧表达式都为假,结果为假;
        • 有一侧表达式为真,结果为真。
      • || 的短路特性
        • 表达式1 || 表达式2
        • 先求解表达式1;
        • 若表达式1的值为 true,则最终结果为 true,不再求解表达式2;
        • 若表达式1的结果为 false,则求解表达式2,以表达式2的结果作为最终结果。
  • 条件运算符与条件表达式

    • 一般形式:表达式1?表达式2 :表达式3;
    • 表达式1必须是 bool 类型;
    • 执行顺序
      • 先求解表达式1;
      • 若表达式1的值为 true,则求解表达式2,表达式2的值为最终结果;
      • 若表达式1的值为 false,则求解表达式3,表达式3的值为最终结果。
    • 条件运算的优先级
      • 条件运算符优先级高于赋值运算符,低于逻辑运算符;
      • 表达式1是 bool 类型,表达式2、3的类型可以不同,条件表达式的最终类型为2和3中较高的类型。

Sizeof 运算、位运算

  • sizeof 运算

    • 语法形式:
      • sizeof (类型名);
      • sizeof 表达式。
    • 结果值:
      • “类型名”所指定的类型,或“表达式”的结果类型所占的字节数。
  • 位运算

    • 按位与(&)
      • 运算规则:
        • 将两个运算量的每一个位进行逻辑与操作。
      • 用途:
        • 将某一位置变为0,其他位不变;
        • 取指定位。
    • 按位或(|)
      • 运算规则:
        • 将两个运算量的每一个位进行逻辑或操作。
      • 用途:
        • 将某些位置变为1,其他位不变。
    • 按位异或(^)
      • 运算规则:
        • 两个操作数进行异或,若对应位相同,则结果该位为0,若对应位不同,则结果该位为1。
      • 用途:
        • 使特定位翻转,与0异或保持原值,与1异或取反。
    • 取反(~)
      • 运算规则:
        • 单目运算符,对一个二进制数按位取反。
    • 移位(<<、>>)
      • 左移运算(<<)
        • 左移后,低位补0,高位舍弃。
    • 右移运算(>>)
      • 右移后:
        • 低位:舍弃。
        • 高位:
          • 无符号数:补0;
          • 有符号数:补“符号位”。

运算优先级、类型转换

  • 运算符优先级
    在这里插入图片描述
  • 混合运算时数据类型的转换
    • 一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。
    • 在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。

猜你喜欢

转载自blog.csdn.net/faker1895/article/details/86519301