• 运算?-C++运算符


    描述

    运算? 为啥运算
    你算1+1 的时候是不是该 使用+号?
    是的 但跟运算 有啥关系?
    总的来说 加减乘除 运算的结果是不是会响应一个结果呢

    基本运算

    • +
    //显示方式
    int num=1+1;
    
    //隐式方式
    int num=1;
    int ret = num +1;//ret==1 还是2????
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • -
    //显示方式
    int num=6-1;
    
    //隐式方式
    int num=6;
    int ret = num -1;//ret==5 还是 其他值????
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • *
    //显示方式
    int num=6*5;
    
    //隐式方式
    int num=6;
    int ret = num *5;//ret==30 还是 其他值????
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • /
    //显示方式
    int num=9/3;
    
    //隐式方式
    int num=9;
    int ret = num /3;//ret==3 还是 其他值????
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意小数是不会显示出来的 需 把类型调整一下

    • %
    //显示方式
    int num=10%3;
    
    //隐式方式
    int num=10;
    int ret = num %3;//ret==1 还是 其他值????
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    赋值运算

    • =
      ```赋值 赋值 顾名思义赋予新的使命`
    //这叫初始化值
     int num=1;
     
     //赋值 将10 这个数据赋值给变量num 也可以称之为 将这个10传送到num
    num=10;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • +=
     //这叫初始化值
     int num=1;
     
     //加号赋值 将num+1在进行 得到结果是2,再赋值给num  
     // 相当于:num = num + 1;
    num+=1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • -=
     //这叫初始化值
     int num=1;
     
     //减号赋值 将num-1在进行 得到结果是0再赋值给num  
    // 相当于:num = num - 1;
    num-=1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • *=
     //这叫初始化值
     int num=2;
     
     //减号赋值 将num*2在进行 得到结果是4,再赋值给num  
    // 相当于:num = num * 2;
    num*=2;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • /=
     //这叫初始化值
     int num=10;
     
     //减号赋值 将num/5在进行 得到结果是2,再赋值给num  
    // 相当于:num = num / 1;
    num/=5;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • %=
     //这叫初始化值
     int num=10;
     
     //减号赋值 将num%2在进行 得到结果是0,再赋值给num  
    // 相当于:num = num % 2;
    num%=2;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    比较运算

    • ==相等

    • !=不相等

    • <小于

    • >大于

    • <=小于等于

    • >=大于等于

    逻辑运算

    • &&逻辑与
      二者都有才能拥有
      比如说:
      满500减100;

    • ||
      逻辑或
      二者都没有才能没有
      比如说:
      钱<3 || 钱>=5
      买小零食

    • !
      逻辑非
      有变成没有
      没有变有

    递增/递减运算

    • ++前置递增运算符
      给变量+1 (直接+1)
    int i=1;
    ++i;
    
    • 1
    • 2
    • ++后置递增运算符
      给变量+1 (将值复制,再+1)
    int i=1;
    i++;
    
    • 1
    • 2
    • ++前置递减运算符
      给变量-1 (直接-1)
    int i=1;
    --i;
    
    • 1
    • 2
    • --后置递减运算符
      给变量-1 (将值复制,再-1)
    int i=1;
    i++;
    
    • 1
    • 2

    位运算

    在硬件里操作常常会应用到位运算
    一个字节有八个二进制数 也就是0-7位
    两个字节有十六个二进制数 也就是0-15位

    (需要主要的是只有整数类型和字符类型才能做位运算)

    & 位与运算
    当两个操作数 只要有一位为1结果为1 其余为0

    	const  int num = 10;
    	
    	//binAnd = 2;
    	const int binAnd = num & 6;
    
    	//00000000 00000000 0000000 00001010-> 10
    	//							&
    	//00000000 00000000 0000000 00000110->6
    	//--------------------------------------
    	//00000000 00000000 0000000 00000010  ->2
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    |或运算

    当两个操作数 只要两者的位为0 那就是0

    
    	const  int num = 10;
    	
    	//binOr = 14;
    	const int binOr = num | 6;
    
    	//00000000 00000000 0000000 00001010-> 10
    	//							|
    	//00000000 00000000 0000000 00000110->6
    	//--------------------------------------
    	//00000000 00000000 0000000 00001110->14
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • ~位非运算
      当一个操作数 的 每一位 为0 变成1 ,每一位 为1 变成0
    	const  int num = ~10;
    	//00000000 00000000 0000000 00001010-> 10
    	//							~
    	//11111111 11111111 1111111 11110101-> -11
    
    • 1
    • 2
    • 3
    • 4
    • ^异或运算
      两个操作数 遇到不相同的位 为1 否则 为0
    • 0^0==0
    • 1^1==0
    • 0.^1 OR 1^0==1
    	const  int num = 10;
    	//XOr=26
        const int XOr = num^16;
    
    	//00000000 00000000 0000000 00001010-> 10
    	//							|
    	//00000000 00000000 0000000 00010000->16
    	//--------------------------------------
    	//00000000 00000000 0000000 00011010->26
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • <<左移运算
      每左移一位 相当于 操作数 *2 左移N位 相当于 操作数 *(2 ^n)次方
      右边的位用 0 来填充, 移动超出左边边界的位则直接抛弃。
    const  int num = 10;
    //LeftShift=40
    const int  LeftShift;= num << 2
    
    //00000000 00000000 0000000 00001010-> 10
    //							<<
    //00000000 00000000 0000000 00000010->2
    //--------------------------------------
    //00000000 00000000 0000000 00101000->40
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • >>右移运算
      每右移一位 相当于 操作数 /2 左移N位 相当于 操作数 /(2 ^n)次方
      如果左操作数是无符号类型,则左边多出来的位用 0 来填充。
      如果左操作数是有符号类型,则左边多出来的位用 符号位(最高位) 来填充。
    const  int num = 10;
    //RightShift= 2
    const int  RightShift;= num >> 2
    
    //00000000 00000000 0000000 00001010-> 10
    //							>>
    //00000000 00000000 0000000 00000010->2
    //--------------------------------------
    //00000000 00000000 0000000 0000010-> 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    三目运算符

    你们应该看了 条件 文章吧 你有没有想过 有一个神奇的操作运算符 :三目运算符
    具体为啥是三目运算符
    首先来看看: 什么是三目运算符

    满足条件? 返回该值或者常量 :返回该值或者常量
    
    • 1

    小例子:

    cout<<你的月薪>-10000?"存起来5000":"存个屁没有大于等于10000";
    
    • 1

    相当于: if else
    当然这可以返回数值 变量(可修改)
    小例子:

    //无论有没有 num>9 都是num=10; 
    (num>9?num :num)=10;
    
    
    • 1
    • 2
    • 3
  • 相关阅读:
    深入ReentrantLock
    第2部分 路由器基本配置
    CV计算机视觉每日开源代码Paper with code速览-2023.11.6
    一款能“干掉” ChatGPT 的应用「GitHub 热点速览」
    操作配置文件保存方式(上位机)
    一天一个javascript小技巧【可选链操作符】
    卡尔曼家族从零解剖-(07) 高斯分布积分为1,高斯分布线性变换依旧为高斯分布,两高斯函数乘积仍为高斯。
    MySQL join原理及优化
    一比一还原axios源码(五)—— 拦截器
    【Spring】三周玩转Spring全家桶
  • 原文地址:https://blog.csdn.net/xiaov_sen/article/details/127427443