• C++ 运算符


            在本文中,我们将借助示例学习C ++中不同类型的运算符。 在编程中,运算符是对值或变量进行运算的符号。例如,+是用于加法的运算符,而 - 是用于减法的运算符。

    C ++中的运算符可以分为六种类型:

    1. 算术运算符

    2. 赋值运算符

    3. 关系运算符

    4. 逻辑运算符

    5. 按位运算符

    6. 其他运算符

    1. C ++算术运算符

    算术运算符用于对变量和数据执行算术运算。例如,

    a + b;

            在此,+运算符用于将两个变量a和b相加。同样,C ++中还有其他各种算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:

    运算符描述实例
    +把两个操作数相加A + B 将得到 30
    -从第一个操作数中减去第二个操作数A - B 将得到 -10
    *把两个操作数相乘A * B 将得到 200
    /分子除以分母B / A 将得到 2
    %取模运算符,整除后的余数B % A 将得到 0
    ++自增运算符,整数值增加 1A++ 将得到 11
    --自减运算符,整数值减少 1A-- 将得到 9

    示例1:算术运算符 

    1. #include
    2. int main() {
    3. int a, b;
    4. a = 2;
    5. b = 4;
    6. // 打印a和b的和
    7. std::cout << "a+b=" << a + b << std::endl; // 6
    8. // 打印a和b的差
    9. std::cout << "a-b=" << a - b << std::endl; // -2
    10. // 打印a和b的乘积
    11. std::cout << "a*b=" << a * b << std::endl; // 8
    12. // 打印a除以b
    13. std::cout << "a/b=" << a / b << std::endl; // a,b均为int类型,a/b也为int型,故a/b=0
    14. // 打印a和b的模(余数)
    15. std::cout << "a%b=" << a % b << std::endl; // 2
    16. return 0;
    17. }

    / 除法运算符

    注意我们上述程序中的操作(a / b)。  / 运算符是除法运算符。

            从上面的示例可以看到,如果一个整数除以另一个整数,我们将得到商。但是,如果除数或被除数是浮点数,我们将以小数形式得到结果。如下例所示。

    1. #include
    2. #include
    3. int main() {
    4. int b;
    5. float a;
    6. a = 2.0;
    7. b = 4;
    8. //如果除数或被除数是浮点数,我们将以小数形式得到结果。
    9. std::cout << "a/b:" << a/b << std::endl; // a/b=0.5
    10. std::cout << "a的数据类型为:" << typeid(a).name() << std::endl;//a的数据类型为:float
    11. }
    在C++中,
    
    7/2 = 3
    7.0 / 2 = 3.5
    7 / 2.0 = 3.5
    7.0 / 2.0 = 3.5

    % 模运算符

    模运算符 % 计算余数。当a (9)除以b(4),余数为1

    注意:%操作只能与整数使用。

    自增和自减运算符

    C ++还分别提供了递增和递减运算符:++和--。

    ++将操作数的值增加1

    -- 将操作数的值减少1

    例如,

    1. int num = 5;
    2. // num增加1
    3. ++num;

    这里,num的值从初始值5增加到6。

    1. #include
    2. int main() {
    3. int num = 5;
    4. num++; // num自增
    5. ++num; // num自增
    6. std::cout << "num的取值为:" << num << std::endl; // 输出7
    7. }

    在上面的程序中,我们使用++和-运算符作为前缀。 我们还可以将这些运算符用作后缀。这些运算符用作前缀与用作后缀时略有不同。详细请参考下面这篇博文:

    自增自减运算符i++与++i的区别-CSDN博客

    2. C ++ 赋值运算符

    在C ++中,赋值运算符用于将值赋给变量。例如,

    // 将5赋值给a
    a = 5;

    这里,我们给变量a赋了一个值5。

    运算符实例等同
    =a = b;a = b;
    +=a += b;a = a + b;
    -=a -= b;a = a - b;
    *=a *= b;a = a * b;
    /=a /= b;a = a / b;
    %=a %= b;a = a % b;

    3. C ++关系运算符

    关系运算符用于检查两个操作数之间的关系。例如,

    // 检查a是否大于b
    a > b;

    在这里,>是一个关系运算符。它检查是否a大于b。

    如果该关系为true,则返回1;如果该关系为false,则返回0

    假设变量 A 的值为 5,变量 B 的值为 11,则:

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

     

    4. C ++逻辑运算符

    逻辑运算符用于检查表达式是true还是false。如果表达式为true,则返回1;如果表达式为false,则返回0

    p>假设变量 A 的值为 1,变量 B 的值为 0,则:

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

    例如: 

    假设,
    a = 5
    b = 8
    
    假如,
    
    (a > 3) && (b > 5) 计算结果为 true
    (a > 3)  && (b < 5) 计算结果为 false
    
    (a > 3) || (b > 5) 计算结果为 true
    (a > 3) || (b < 5) 计算结果为 true
    (a < 3) || (b < 5) 计算结果为 false
    
    !(a == 3) 计算结果为 true
    !(a > 3) 计算结果为 false

     

    5. C ++按位运算符

    在C ++中,按位运算符用于对单个位执行操作。 它们只能与char和int数据类型一起使用。

    下表显示了 C++ 支持的位运算符。假设变量 A 的值为 60(0011 1100),变量 B 的值为 13(0000 1101),则:

    运算符描述实例
    &如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。(A & B) 将得到 12,即为 0000 1100
    |如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。(A | B) 将得到 61,即为 0011 1101
    ^如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。(A ^ B) 将得到 49,即为 0011 0001
    ~二进制补码运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0。(~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。
    <<二进制左移运算符。左操作数的值向左移动右操作数指定的位数。A << 2 将得到 240,即为 1111 0000
    >>二进制右移运算符。左操作数的值向右移动右操作数指定的位数。A >> 2 将得到 15,即为 0000 1111

    杂项运算符

    下表列出了 C++ 支持的其他一些重要的运算符。

    运算符描述
    sizeofsizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。
    Condition ? X : Y条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。
    ,逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。
    .(点)和  ->(箭头)成员运算符用于引用类、结构和共用体的成员。
    Cast强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。
    &指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。
    *指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。

     

    C++ 中的运算符优先级

            运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。

            例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。

            下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

    类别 运算符 结合性 
    后缀 () [] -> .  ++   - -  从左到右 
    一元 +  -   !  ~  ++  - -   (type)*  &  sizeof 从右到左 
    乘除 *  /  % 从左到右 
    加减 +  - 从左到右 
    移位 << >> 从左到右 
    关系 < <=  > >= 从左到右 
    相等 ==  != 从左到右 
    位与 AND 从左到右 
    位异或 XOR 从左到右 
    位或 OR 从左到右 
    逻辑与 AND && 从左到右 
    逻辑或 OR || 从左到右 
    条件 ?: 从右到左 
    赋值 =  +=  -=  *=  /=  %=>>=  <<=  &=  ^=   |= 从右到左 
    逗号 从左到右 

    示例:运算符优先级 

    1. #include
    2. int main(){
    3. int num1, num2, num3;
    4. num1 = 5 - 2 * 6;
    5. num2 = 5 - (2 * 6);
    6. num3 = (5 - 2) * 6;
    7. std::cout << "num1为:" << num1 << std::endl; // num1为:-7
    8. std::cout << "num2为:" << num2 << std::endl; // num2为:-7
    9. std::cout << "num3为:" << num3 << std::endl; // num3为:18
    10. return 0;
    11. }

     

  • 相关阅读:
    elasticsearch,为什么prefix性能消耗很大
    【力扣 Hot100 | 第七天】4.22(找到字符串中所有字母异位词)
    【校招VIP】产品思维考察之内容运营
    modbus协议讲解,上位机与PLC交互
    Flink状态管理与恢复
    给一百万张图片批量添加水印
    keil软件中按F12 无法跳转到函数、变量定义处
    H3C SecParh堡垒机 get_detail_view.php 任意用户登录漏洞
    wav怎么转mp3?请看详细步骤
    浏览器与Node.js事件循环:异同点及工作原理
  • 原文地址:https://blog.csdn.net/m0_48241022/article/details/133364983