zoukankan      html  css  js  c++  java
  • C学习笔记-运算符

    一些基本概念

    数据对象:泛指数据在内存的存储区域
    左值:表示可以被更改的数据对象
    右值:能赋给左值的量

    算数运算符

    运算符 描述 实例
    + 把两个操作数相加 a + b
    - 从第一个操作数中减去第二个操作数 a - b
    * 把两个操作数相乘 a * b
    / 分子除以分母 a / b
    % 取模运算符,整除后的余数 a % b
    ++ 自增运算符,整数值增加 1 a++
    自减运算符,整数值减少 1 a–
    a++ 与 ++a 的主要区别有两个: 1、a++返回原来的值,++a返回加1后的值 2、a++不能作为左值,而++a可以

    关系运算符

    运算符 描述 实例
    == 检查两个操作数的值是否相等,如果相等则条件为真。 A == B
    != 检查两个操作数的值是否相等,如果不相等则条件为真。 A != B
    > 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 A > B
    < 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 A < B
    >= 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 A >= B
    <= 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 A <= B

    逻辑运算符

    运算符 描述 实例
    && 逻辑与。如果两个操作数都非零,则条件为真。 A && B
    || 逻辑或。如果两个操作数中有任意一个非零,则条件为真。 A || B
    ! 逻辑非。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 A && B

    位运算符

    p q p & q p | q p ^ q
    0 0 0 0 0
    0 1 0 1 1
    1 1 1 1 0
    1 0 0 1 1
    运算符 描述 实例
    & 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 A & B
    | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 A | B
    ^ 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 A ^ B
    ~ 二进制补码运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0。 ~A
    << 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 A << 2
    >> 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 A >> 2

    注:>>称为有符号右移,在负数右移的时候,会连同高位符号位一起右移。无符号右移使用>>>,无论高位是什么,统一使用0填充。

    赋值运算符

    运算符 描述 实例
    = 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C
    += 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A
    -= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A
    *= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A
    /= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A
    %= 求模且赋值运算符,求两个操作数的模赋值给左边操作数 C %= A 相当于 C = C % A
    <<= 左移且赋值运算符 C <<= 2 等同于 C = C << 2
    >>= 右移且赋值运算符 C >>= 2 等同于 C = C >> 2
    &= 按位与且赋值运算符 C &= 2 等同于 C = C & 2
    ^= 按位异或且赋值运算符 C ^= 2 等同于 C = C ^ 2
    |= 按位或且赋值运算符 C |= 2 等同于 C = C | 2

    杂项运算符 ↦ sizeof & 三元

    运算符 描述 实例
    sizeof() 返回变量的大小。 sizeof(a) 将返回 4,其中 a 是整数。
    & 返回变量的地址。 &a; 将给出变量的实际地址。
    * 指向一个变量。 *a; 将指向一个变量。
    ? : 条件表达式 如果条件为真 ? 则值为 X : 否则值为 Y

    注:以上表格数据均来源于C 运算符

    运算符优先级

    优先级 运算符 结合性
    1 ++(后缀),–(后缀),()(调用函数),{}(语句块),.,-> 从左到右
    2 ++(前缀),–(前缀),+(前缀),-(前缀),!(前缀),~(前缀),sizeof,*(取指针值),&(取地址),(type)(类型转化) 从右到左
    3 *, /, % 从左到右
    4 +,- 从左到右
    5 << >> 从左到右
    6 < > <= >= 从左到右
    7 == != 从左到右
    8 & 从左到右
    9 ^ 从左到右
    10 | 从左到右
    11 && 从左到右
    12 || 从左到右
    13 ? 从右到左
    14 =,*=,%=,+=,-=,<<=,>>=,&=,|=,^= 从右到左
    15 ,(逗号运算符) 从左到右
  • 相关阅读:
    linux常用命令
    mysql 开发基础系列20 事务控制和锁定语句(上)
    sql server 性能调优之 资源等待 CXPACKET
    mysql 开发基础系列19 触发器
    mysql 开发基础系列18 存储过程和函数(下)
    mysql 开发基础系列17 存储过程和函数(上)
    sql server 性能调优之 资源等待PAGEIOLATCH
    mysql 开发基础系列16 视图
    mysql 开发基础系列15 索引的设计和使用
    sql server 性能调优之 当前用户请求分析 (1)
  • 原文地址:https://www.cnblogs.com/cj5785/p/10664811.html
Copyright © 2011-2022 走看看