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

算数运算符

运算符 描述 例子
+ 两个数字相加 两个变量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个字节
  • ……
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/610513.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java二叉树(2)

一、二叉树的链式存储 二叉树的存储分为顺序存储和链式存储 &#xff08;本文主要讲解链式存储&#xff09; 二叉树的链式存储是通过一个一个节点引用起来的&#xff0c;常见的表示方式有二叉三叉 // 孩子表示法 class Node { int val; // 数据域 Node left; // 左孩子的引用…

【VS2019】x64 Native Tools Command Prompt for Vs 2019使用conda命令进入环境

【VS2019】x64 Native Tools Command Prompt for Vs 2019使用conda命令进入环境 安装完VS2019后&#xff0c;打开终端x64 Native Tools Command Prompt for Vs 2019&#xff0c;直接运行conda会出现‘conda’ 不是内部或外部命令&#xff0c;也不是可运行的程序 原因分析&am…

vite 和 rollup

Rollup Rollup 是一个 JavaScript 模块打包器&#xff0c;它可以将多个模块打包成一个单独的文件。 rollup 的特点&#xff1a; 不会生成过多的运行代码 可以多模块化规范打包 input&#xff08;输入&#xff09;: 这是你的项目的入口点&#xff08;即主要的 JavaScript 文…

[C++][算法基础]树的重心(树图DFS)

给定一颗树&#xff0c;树中包含 n 个结点&#xff08;编号 1∼n&#xff09;和 n−1 条无向边。 请你找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。 重心定义&#xff1a;重心是指树中的一个结点&#xff0c;如果将这个点删除后&a…

考研数学|零基础冲130复习方案+资料分享

如果想考130&#xff0c;那就一定要好好复习基础。 因为24年开始&#xff0c;考研的走向就已经发生了改变&#xff0c;考研数学开始越来越注重一下三点的考察&#xff1a; 基础知识的掌握程度计算能力解题能力 这三点环环相扣&#xff0c;每一个都要复习好才行。 在基础阶段…

Linux操作系统的学习

Linux系统的目录结构 / 是所有目录的顶点目录结构像一颗倒挂的树 Linux常用命令 常见命令 序号命令对应英文作用1lslist查看当前目录下的内容2pwdprint work directory查看当前所在目录3cd [目录名]change directory切换目录4touch [文件名]touch如果文件不存在&#xff0c;新…

《极域多媒体教室互动管理系统软件》控制方法大全

前言及背景&#xff1a; 当我坐在电脑前&#xff0c;打开它&#xff0c;点开谷歌&#xff0c;刚刚想打开百度&#xff0c;突然闪出来了&#xff1a; 该网页已被阻止&#xff01;&#xff01;&#xff01; 正文&#xff1a; 1.极域控制原理&#xff1a; 好…

猝不及防 CCF-B ICPP 2024投稿延期至4月22日提交摘要 机会来了别错过

会议之眼 快讯 第53届ICPP&#xff08;International Conference on Parallel Processing&#xff09;即国际并行处理会议将于 2024年 8月12日-15日在瑞典哥特兰岛举行&#xff01;ICPP是世界上最古老的连续举办的并行计算计算机科学会议之一。它是学术界、工业界和政府的研究…

MINI2440 开发板 给他干出来了

环境是ubuntu14.04。不要问我为什么是这个版本&#xff0c;因为之前的ubuntu12.04 环境干不出来&#xff0c;你去试试就知道了&#xff01;各种资源包下载不下来。 输入启动参数&#xff1a; 进入MINI2440&#xff1a;别说心里一万个开心&#xff0c;启动完成&#xff0c;输入p…

【工具】NPS 内网穿透搭建

背景 在日常开发中经常会涉及到使用公网某个端口进行开发调试的情况&#xff0c;但我们日常开发的机器IP是非公网IP&#xff0c;所以需要使用内网穿透的手段&#xff0c;使我们的服务在公网上能被访问到。 常用的内网穿透工具分两大类&#xff0c;一类是付费/免费服务&#xf…

git修改本地提交历史邮箱地址

1、Git&#xff08;Git&#xff09; 2、修改Git本地提交历史中的邮箱地址 使用 git rebase 命令进行交互式重置。 具体步骤如下&#xff1a;&#xff08;https://git-scm.com/docs/git-rebase&#xff09; 1、查看提交历史&#xff1a; 使用 git log 命令列出提交历史&#x…

09 Php学习:数组和排序

数组概念 在PHP中&#xff0c;数组是一种复合数据类型&#xff0c;用于存储多个值。以下是关于PHP数组的详细解释&#xff1a; 索引数组&#xff1a;索引数组是最基本的数组类型&#xff0c;其中每个元素都有一个唯一的数字索引&#xff0c;从0开始递增。 关联数组&#xff…