C/C++基础----运算符

本文详细介绍了C++中的算数运算符(如加减乘除和取余)、逻辑运算符、关系运算符、位运算符(包括按位与、或、取反、异或和位移)、赋值运算符以及sizeof运算符的使用和示例。重点展示了这些运算符在实际编程中的操作和二进制位级计算的应用。
摘要由CSDN通过智能技术生成

算数运算符

运算符 描述 例子
+ 两个数字相加 两个变量a + b得到两个变量之和
- 两个数字相减 -
* 两个数字相乘 -
/ 两个数字相除 -
% 两个数字相除后取余数 8 % 3 = 2
-- 一个数字递减 变量a:a-- 、--a
++ 一个数字递增 变量a: a++ 、 ++a
  • 其中递增和递减运算符在左边和在右边效果不一样
  • 单独存在时都是递增和递减,如果和别的组合运算就会不一样
  • 例如:
    #include <iostream>
    
    using namespace std;
    
    int main() {
        int a = 5;
        int b = 3;
        int c = a + ++b;
        // 因为之前b+了1,再改回来
        b = 3;
        int d = a + b++;
        cout << "c的值,先++" << c << endl;
        cout << "d的值,后++" << d << endl;
        return 0;
    }
    
    在这里插入图片描述
  • a + b++是先用a+b赋值给c,然后再把b自增1
  • a + ++b是先把b自增1然后再把a+b赋值给d

逻辑运算符

  • 表达式常用于判断
运算符名称描述
&&逻辑与a && b 其中都为true时结果为true
||逻辑或a || b 其中只有一个为true结果为true,都为false结果为false
!逻辑非!a 如果a为flase,则结果为true,如果a为true结果为false

关系运算符

  • 常用于判断
  • 两个数字符合表达式则返回true,不符合则返回false
运算符名称
<小于
>大于
==等于
>=大于等于
<=小于等于
!=不等于

位运算符

  • 位运算符就是操作二进制上的位
运算符描述
&按位进行与操作
|按位进行或操作
~按位进行取反操作
^按位进行异或操作
<<按位进行左移
>>按位进行右移
  • 例子&运算:例如我们有两个变量a和b分别为60和13

    • bitset<32>#include <bitset>导入
    • 原用法为std::bitset<32> 表示把十进制转为32位的二进制表示
    • 因为前面定义了命名空间所以省略了std::
    • bitset<32> .to_string()方法把二进制转为二进制字符串
    • stoi(binary_c.to_string(), nullptr, 2)把二进制字符串转为十进制数字
    #include <iostream>
    #include <bitset>
    
    using namespace std;
    
    int main() {
        int a = 60;
        int b = 13;
        // 十进制转为二进制表示
        bitset<32> binary_a(a);
        bitset<32> binary_b(b);
        cout << "a的二进制表示:" << binary_a << endl;
        cout << "b的二进制表示:" << binary_b << endl;
        // 按位与操作之后的二进制数据
        bitset<32> binary_c = binary_a & binary_b;
        // 二进制数据转为二进制字符串再转为十进制
        int c = stoi(binary_c.to_string(), nullptr, 2);
        cout << "a & b的二进制表示:" << binary_c << endl;
        cout << "a & b的十进制表示:" << c << endl;
        return 0;
    }
    

    在这里插入图片描述

    • 根据结果可以看到60 & 13的结果是12
    • 是根据二进制的位来进行运算的
      在这里插入图片描述
  • 例子:|运算

    在这里插入图片描述

  • 例子:~取反运算

    #include <iostream>
    #include <bitset>
    
    using namespace std;
    
    int main() {
        int a = 60;
        int b = ~a;
        bitset<32> binary_a(a);
        bitset<32> binary_b(b);
        cout << "a的二进制表示:" << binary_a << endl;
        cout << "~a的二进制表示:" << binary_b << endl;
        cout << "~a的十进制表示:" << b << endl;
        return 0;
    }
    

    在这里插入图片描述

  • 例子: ^异或运算

    • 比较两个位的不同,如果a和b相同结果则为0,不相同结果为1
      在这里插入图片描述
  • 例子:<<左移运算

    #include <iostream>
    #include <bitset>
    
    using namespace std;
    
    int main() {
        int a = 60;
        int b = a << 2;
        bitset<32> binary_a(a);
        bitset<32> binary_b(b);
        cout << "a的二进制表示:" << binary_a << endl;
        cout << "a << 2的二进制表示:" << binary_b << endl;
        cout << "a << 2的十进制表示:" << b << endl;
        return 0;
    }
    

    在这里插入图片描述

  • 例子:>>右移运算在这里插入图片描述


赋值运算符

  • 一边赋值一边运算
  • 之前的运算符除逻辑运算符和关系运算符外都可以一边赋值一边运算
  • 例:a+=1 就是 a = a + 1; a &= 10 就是 a = a & 10

其他

  • sizeof 运算符返回大小
#include <iostream>

using namespace std;

int main() {
    int a = 1;
    short b= 1;
    long c  = 1;
    long long d = 1;
    double e = 10.2;

    cout << sizeof a << endl;
    cout << sizeof b << endl;
    cout << sizeof c << endl;
    cout << sizeof d << endl;
    cout << sizeof e << endl;
    cout << sizeof(int) << endl;
    return 0;
}
  • int为4个字节
  • short为2个字节
  • long为4个字节
  • long long为8个字节
  • double为8个字节
  • ……
    在这里插入图片描述
  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值