当前位置: 首页 > article >正文

浅谈C++之运算符

一、基本介绍

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

二、运算符分类

  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.kler.cn/a/313823.html

相关文章:

  • 从华为到创业公司
  • 缓存与数据库不一致的解决方案:深入理解与实践
  • Jetpack 之 Ink API初探
  • vue2.7.14 + vant + vue cli脚手架转vite启动运行问题记录
  • 详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送
  • 普通电脑上安装属于自己的Llama 3 大模型和对话客户端
  • 文件上传-php
  • ZionAI应用无代码开发平台 | OPENAIGC开发者大赛企业组AI创新之星奖
  • Spring扩展点系列-MergedBeanDefinitionPostProcessor
  • 企业微信应用消息收发实施记录
  • Spring Boot实现:Java免税商品购物商城全攻略
  • 8. 详细描述一条 SQL 语句在 MySQL 中的执行过程。
  • 深度学习——微积分求导,反向传播
  • 简单多状态dp第三弹 leetcode -买卖股票的最佳时机问题
  • 嵌入式Linux学习笔记(6)-线程处理、线程同步、线程池(c语言实现)
  • Spring Boot与gRPC的完美融合:构建高效用户服务与订单服务通信
  • 视频存储EasyCVR视频监控汇聚管理平台设备录像下载报错404是什么原因?
  • GO GIN 推荐的库
  • 2024年上海初中生古诗文大会倒计时一个半月:来做2024官方模拟题
  • 新手学习Python第十天-新手笔记(速学)
  • 【深度学习】(1)--神经网络
  • Pytorch Lightning框架
  • Java集合(List篇)
  • SpringBootAdmin源码修改编译002_踩坑记录一堆坑_记录过程_没有成功---VUE工作笔记0027
  • linux 操作系统下dhcrelay命令介绍和案例应用
  • 28V_1MHZ电子烟,无线鼠标,医疗器械等专用恒频升压转换器超小体积封装