当前位置: 首页 > 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/news/313823.html

相关文章:

  • 文件上传-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电子烟,无线鼠标,医疗器械等专用恒频升压转换器超小体积封装
  • 用户态缓存:高效数据交互与性能优化
  • Spring Boot中的响应与分层解耦架构
  • C一语言—动态内存管理
  • 24年蓝桥杯及攻防世界赛题-MISC-1
  • 力扣最热一百题——除自身以外数组的乘积
  • 【学术会议:中国厦门,为全球的计算机科学与管理科技研究者提供一个国际交流平台】第五届计算机科学与管理科技国际学术会议(ICCSMT 2024)
  • win10下使用docker、k8s部署java应用
  • Flask 第六课 -- 路由
  • 如何在Linux下升级R版本和RStudio
  • 2024华为杯研赛E题保姆级教程思路分析