浅谈C++之运算符

news/2024/9/21 21:33:16 标签: c++, javascript, 开发语言

一、基本介绍

  运算符是描述对数据进行的运算(操作)、体现数据之间运算关系的符号,运算符也叫操作符。

二、运算符分类

  1. 算术运算符:用于执行基本的数学运算。

    • +(加)
    • -(减)
    • *(乘)
    • /(除)
    • %(取模,求余数)
    • ++(自增)
    • --(自减)
  2. 关系运算符:用于比较两个值。

    • ==(等于)
    • !=(不等于)
    • >(大于)
    • <(小于)
    • >=(大于等于)
    • <=(小于等于)
  3. 逻辑运算符:用于布尔逻辑运算。

    • &&(逻辑与)
    • ||(逻辑或)
    • !(逻辑非)
  4. 位运算符:对操作数的位进行操作。

    • &(位与)
    • |(位或)
    • ^(位异或)
    • ~(位取反)
    • <<(左移)
    • >>(右移)
  5. 赋值运算符:用于赋值操作。

    • =(简单赋值)
    • +=(加法赋值)
    • -=(减法赋值)
    • *=(乘法赋值)
    • /=(除法赋值)
    • %=(取模赋值)
    • &=(位与赋值)
    • |=(位或赋值)
    • ^=(位异或赋值)
    • <<=(左移赋值)
    • >>=(右移赋值)
  6. 其他运算符

    • sizeof(获取变量或类型的大小)
    • &(取地址)
    • *(解引用)
    • new 和 delete(动态内存分配和释放)
    • this(当前对象的指针)
    • . 和 ->(成员访问)
    • ?:(条件运算符,三元运算符)
    • ,(逗号运算符)
  7. 特殊运算符

    • ::(作用域解析运算符)
    • typeid(返回变量类型的信息)
    • const_cast(去除 const 属性)
    • dynamic_cast(运行时类型检查的向下转型)
    • reinterpret_cast(低层次的重新解释转换)
    • static_cast(用于基本的非多态类型转换)

三、运算符示例

算术运算符

int a = 10;
int b = 5;
int sum = a + b;    // 15
int difference = a - b;  // 5
int product = a * b;     // 50
int quotient = a / b;    // 2
int remainder = a % b;   // 0

关系运算符

int x = 10;
int y = 20;
bool equal = (x == y);   // false
bool notEqual = (x != y);  // true
bool lessThan = (x < y);   // true
bool greaterThan = (x > y);  // false
bool lessThanOrEqual = (x <= y);  // true
bool greaterThanOrEqual = (x >= y);  // false

逻辑运算符

bool isRaining = true;
bool isUmbrella = false;
bool shouldStayIndoor = isRaining && isUmbrella;  // false
bool shouldTakeJacket = isRaining || isUmbrella;  // true
bool notRaining = !isRaining;  // false

位运算符

int num1 = 12;  // 1100
int num2 = 9;   // 1001
int andResult = num1 & num2;  // 1000 (8)
int orResult = num1 | num2;   // 1101 (13)
int xorResult = num1 ^ num2;  // 0101 (5)
int notNum1 = ~num1;  // -13 (two's complement)

赋值运算符

int value = 0;
value = 10;  // 简单赋值
value += 5;  // 加法赋值,value 现在是 15
value -= 3;  // 减法赋值,value 现在是 12
value *= 4;  // 乘法赋值,value 现在是 48
value /= 2;  // 除法赋值,value 现在是 24
value %= 5;  // 取模赋值,value 现在是 4

其他运算符

int size = sizeof(int);  // 获取 int 类型的大小
int *ptr = &value;       // 取地址
int originalValue = *ptr;  // 解引用
int array[5] = {1, 2, 3, 4, 5};
int firstElement = array[0];  // 访问数组的第一个元素

特殊运算符

class MyClass {
public:
    void myMethod() {}
};

MyClass obj;
void (MyClass::*mptr)() = &MyClass::myMethod;  // 成员指针

int main() {
    MyClass obj;
    (obj.*mptr)();  // 通过成员指针调用成员函数
    return 0;
}


http://www.niftyadmin.cn/n/5669480.html

相关文章

办公软件wps常用的快捷键有哪些

WPS办公软件常用的快捷键非常丰富&#xff0c;这些快捷键可以大大提高用户的工作效率。以下是一些常用的WPS快捷键及其功能&#xff1a; 通用快捷键 新建文档&#xff1a;Ctrl N打开文档&#xff1a;Ctrl O保存文档&#xff1a;Ctrl S另存为&#xff1a;F12 或 Ctrl Shif…

2024华为杯E题:高速公路应急车道紧急启用模型

高速公路拥堵现象的原因众多&#xff0c;除了交通事故外&#xff0c;最典型的就是部分路段出现瓶颈现象&#xff0c;主要原因是车辆汇聚&#xff0c;而拥堵后又容易蔓延。高速公路一些特定的路段容易形成堵点&#xff0c;如匝道出入口或桥梁入口等。当然&#xff0c;有些高速公…

【工具变量】科技金融试点城市DID数据集(2000-2023年)

时间跨度&#xff1a;2000-2023年数据范围&#xff1a;286个地级市包含指标&#xff1a; year city treat post DID&#xff08;treat*post&#xff09; 样例数据&#xff1a; 包含内容&#xff1a; 全部内容下载链接&#xff1a; 参考文献-pdf格式&#xff1a;https://…

LeetCode[中等] 438. 找到字符串中所有字母异位词

给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 思路&#xff1a;滑动窗口 s包含p的异位词 ——> 则…

Kubernetes从零到精通(11-CNI网络插件)

Kubernetes网络模型 Kubernetes的网络模型&#xff08;Kubernetes Networking Model&#xff09;旨在提供跨所有节点、Pod和服务的统一网络连接。它的核心理念是通过统一的网络通信规则&#xff0c;保证集群中的所有组件能够顺畅地相互通信。Kubernetes网络模型主要有以下几个关…

【图灵完备 Turing Complete】游戏经验攻略分享 Part.6 处理器架构2 函数

新的架构来了&#xff0c;本游戏的最后一个攻略分享&#xff0c;最后汇编部分无非是对于操作码的熟练&#xff0c;硬件没有问题&#xff0c;那么也就无关痛痒了。 汇编实现&#xff0c;两数相或和两数相与非一起相与即可。 八位异或器&#xff0c;整就完事了。 有手就行。 利…

TESSY创建需要手写桩的测试用例

如果需要让桩函数有额外的功能&#xff0c;如&#xff1a;传参检测、局部数据处理、多传参检测、函数实现变更等&#xff0c;可以进行手写桩。 我们以tessy5.1 IDE为例&#xff0c;给大家展示编写一个需要手写桩的测试用例过程。 1、前期的准备工作 可以参考以下文章&#xff1…

【学习笔记】SSL/TLS安全机制之CAA

1、概念界定 CAA全称Certificate Authority Authorization&#xff0c;即证书颁发机构授权&#xff0c;每个CA都能给任何网站签发证书。 2、CAA要解决的问题 例如&#xff0c;蓝色网站有一张橙色CA颁发的证书&#xff0c;我们也知道还有许多其他的CA&#xff1b;中间人可以说服…