【C++造神计划】运算符

1 赋值运算符

赋值运算符的功能是将一个值赋给一个变量

int a = 5; // 将整数 5 赋给变量 a 

运算符左边的部分叫作 lvalue(left value),右边的部分叫作 rvalue(right value)

  • 左边 lvalue 必须是一个变量

  • 右边 rvalue 可以是一个常量、一个变量、一个运算(operation)的结果或是前面几项的任意组合

  • 赋值运算符永远是将右边的值赋给左边,不会反过来。

  • 将变量 b(rvalue)的值赋给变量 a (lvalue),不论 a 当时存储的是什么值

  • 只是将 b 的数值赋给 a,以后如果 b 的值改变了,并不会影响到 a 的值

Example 1

  • C++ 拥有而其他语言没有的一个特性是赋值符(=)可以被用作另一个赋值符的 rvalue(或 rvalue的一部分)

// 先将 5 赋给变量 b,然后把前面对b的赋值运算的结果(即 5)加上2 再赋给变量 a,这样最后a中的值为7
a = 2 + (b = 5);

Example 2

a = b = c = 5; //将5同时城给3个变量a、b和c 

2 数学运算符

数学运算符

  • +(加,adldition)

  • -(减,subtraction)

  • *(乘,multiplicu∶.on)

  • /(除,division)

  • %(取模,module)

3 组合运算符

组合运算符(+=、 -、* 和 /= 及其他),这些运算符使得只用一个基本运算符就可以改写变量的值

value += increase;   // 等同于value = value + increase
a -= 5;
a /= b;
price *= unita + 1;  // 等同于price = price * (unita + 1);

 

4 递增和递减

  • 递增(increase)运算符(++)

  • 递减(decrease)运算符(--)

它们使得变量中存储的值加 1或减1,分别等同于+=1和-=1

示例

a++;
a += 1;
a = a+1;
  • 注意 a++ 和 ++a 在运算式中代表不同的意思∶

    • 前缀(++a),变量 a 的值先增加,再计算整个表达式的值

    • 后缀(a++),变量 a 的值在表达式计算后才增加

#include <iostream>
using namespace std;int main()
{int a = 3;          // a = 3cout << a << endl;int b = ++a;        // a = 4, b = a = 4cout << a << endl;cout << b << endl;int c = a++;        // c = a = 4, a + 1 = 5cout << a << endl;cout << c << endl;return 0;
}

5 条件运算符三目运算符

语法格式

condition ? result1 : result2 

 如果条件为true,整个表达式返回result1,否则返回result2。

7==5 ? 4:3      // 返回3,因为7不等于5. 
7=-5+2 ? 4:3    // 返回4,因为7等于5+2。 
5>3 ? a:b       // 返回a,因为5大于3。
a>b ? a:b       // 返回较大值,a或b。
#include <iostream>
using namespace std;int main ()
{int a,b,c;a=2;b=7;c = (a>b) ? a : b;cout << c <<endl;return 0;
}

 

6 比较运算符

比较运算的结果是一个 bool 值,根据运算结果的不同,它的值只能是 true 或 false

  • == 相等(Equl)

  • != 不等(Different)

  • \> 大于(Greater than)

  • < 小于(Lessthan)

  • \>= 大于等于(Greater or equal than)

  • <= 小于等于(Less or equal than)

示例

(7 == 5)将返回 false
(5 > 4)将返回 true
(3 != 2)将返回 true
(6 > 6)将返回 false#include <stdio.h>int main()
{bool var = (7==5);printf("value of var: %s.\n", var==true? "true" : "false");return 0;
}

 在 ANSI-C++ 标准出现之前,许多编译器中,就像 C 语言中,关系运算并不返回值为 true 或 false 的 bool 值,而是返回一个整型数值为结果,它的数值可以为 0,代表 false,或一个非0数值(通常为1),代表 true

7 逻辑运算符

  • !: 等同于 boolean 运算 NOT (取非)

  • &&: 逻辑与运算(AND)

  • ||: 逻辑或运算(OR)

示例

!true  // 返回 false
!false // 返回 true#include <stdio.h>int main()
{bool var = (!true);printf("value of var: %s.\n", var==true? "true" : "false");int a = 10;var = (a < 0 || a > 10);printf("value of var: %s.\n", var==true? "true" : "false");return 0;
}

8 逗号运算符

逗号运算符(,)用来分开多个表达式,并只取最右边的表达式的值返回

Example

a = (b = 3, b + 2);

这行代码首先将 3 赋值给变量 b,然后将 b+2 赋值给变量 a。所以最后变量 a 的值为 5,而变量 b 的值为 3

9 变量类型转换运算符

  • 变量类型转换运算符可以将一种类型的数据转换为另一种类型的数据

  • 在原转换的表达式前面加用括号"()"括起来的新数据类型

Example

int i;
float f = 3.14;
i = (int)f;

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

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

相关文章

木马免杀代码之python反序列化分离免杀

本篇文章主要用到python来对CobaltStrike生成的Shellcode进行分离免杀处理, 因此要求读者要有一定的python基础, 下面我会介绍pyhon反序列化免杀所需用到的相关函数和库 exec函数 exec函数是python的内置函数, 其功能与eval()函数相同, 但不同的是exec函数支持多行python代码…

我国新戊二醇产能逐渐增长 市场集中度有望进一步提升

我国新戊二醇产能逐渐增长 市场集中度有望进一步提升 新戊二醇&#xff08;NPG&#xff09;又称为2,2-二甲基-1,3-丙二醇&#xff0c;化学式为C5H12O2&#xff0c;熔点为124-130℃。新戊二醇多表现为一种无特殊气味的白色结晶固体&#xff0c;易溶于水及醇、醚等溶液。新戊二醇…

为什么看到这么多人不推荐C++?

前几天逛知乎的时候&#xff0c;看到一个问题&#xff1a; 看到这个问题我倒是想吐槽几句了。 C一直没找到自己的定位&#xff01; C语言&#xff1a;我是搞系统编程开发的&#xff0c;操作系统、数据库、编译器、网络协议栈全是我写的。 PHP&#xff1a;我是搞后端业务开发…

docker compose安装及安装慢解决办法

docker compose安装 Compose下载添加执行权限创建软链测试安装结果 Compose下载 curl -SL "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose上述compose是在docker官方git…

一年期SSL证书怎么申请?

申请SSL证书三步走 JoySSL_JoySSL SSL证书_JoySSL https证书-JoySSL 一、选证书类型 根据网站性质与安全需求&#xff0c;选定合适的SSL证书&#xff1a; - 域名验证证书&#xff08;DV&#xff09;&#xff1a;快速验证域名所有权&#xff0c;适用于个人网站、博客&#xff…

ReentrantLock源码阅读

1. 概述 lock锁, 基于队列同步器AQS, 实现公平锁、非公平锁 队列同步器AQS可以阅读我这篇文章&#xff1a; 点击传送 实现了Lock接口: public class ReentrantLock implements Lock// 加锁 获取不到锁一直等待 void lock(); // 加锁 获取不到锁一直等待 等待过程可以被中断…

websocket原理及简单入门

在了解websocket之前,我们先来了解一下websocket出现之前的世界 当我们在开腾讯会议或视频通话时,我们自己的影像会传给对方,对方的影像也能同时传给我们,这就是即时通讯技术 即时通讯技术是实现&#xff1a;服务器端可以时地将数据的更新或变化反应到客户端&#xff0c;在Web中…

Python中操作Excel表对象并打包为脚本

一、准备工作 pip install pandas pip install openpyxl pip install pyinstaller 数据表格&#xff1a; 数据表下载 二、执行写入操作 import pandas as pd # pyinstaller --onefile attendance_records_score.py # 打包 # 读取源Excel文件&#xff08;假设源表有列A…

【攻防世界】php_rce (ThinkPHP5)

进入题目环境&#xff0c;查看页面信息&#xff1a; 页面提示 ThinkPHP V5&#xff0c;猜测存在ThinkPHP5 版本框架的漏洞&#xff0c;于是查找 ThinkPHP5 的攻击POC。 构造 payload: http://61.147.171.105:50126/?sindex/think\app/invokefunction&functioncall_user_f…

【Go语言快速上手(一)】 初识Go语言

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Go语言专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; Go快速上手 1. 前言2. Go语言简介(为…

模拟Android系统Zygote启动流程

版权声明&#xff1a;本文为梦想全栈程序猿原创文章&#xff0c;转载请附上原文出处链接和本声明 前言&#xff1a; 转眼时间过去了10年了&#xff0c;回顾整个10年的工作历程&#xff0c;做了3年的手机&#xff0c;4年左右的Android指纹相关的工作&#xff0c;3年左右的跟传感…

什么是三次握手和四次握手

三次握手和四次挥手是TCP协议中用于建立和终止TCP连接的重要机制。 三次握手是TCP连接建立的过程&#xff0c;具体步骤如下&#xff1a; 客户端发送一个带有SYN标志的数据包给服务端&#xff0c;表示希望建立连接。服务端收到后&#xff0c;回传一个带有SYN/ACK标志的数据包&…

亚马逊CloudFront使用体验

前言 首先在体验CloudFront之前&#xff0c;先介绍一下什么是CDN&#xff0c;以及CDN的基本原理。 CDN是Content Delivery Network&#xff08;内容分发网络&#xff09;的缩写&#xff0c;是一种利用分布式节点技术&#xff0c;在全球部署服务器&#xff0c;即时地将网站、应…

《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.6 年初操作:科目余额结转

2.6.6 年初操作&#xff1a;科目余额结转 在使用事务代码 FAGLB03 查询科目余额时&#xff0c;可以看到按期间的发生额清单。其中&#xff0c;第一行称为“余额结转”&#xff0c;该行的累计余额代表上年度遗留下来的余额&#xff0c;也就是年初余额。对于资产负债表科目而言&a…

【QT教程】QT6图形视图编程

QT6图形视图编程 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费…

七大设计原则

在软件开发的领域中&#xff0c;随着技术的不断进步和市场需求的不断变化&#xff0c;软件系统的设计和维护变得越来越重要。为了确保软件系统能够长期有效地运行&#xff0c;并且能够在未来的发展中适应新的需求和技术变化&#xff0c;提高软件系统的可维护性和可复用性成为了…

map与set

set使用 set在我们就是我们前面学习的k模型&#xff0c;它可以用来比对数据&#xff0c;增删查的时间复杂度都是O&#xff08;logn&#xff09;效率非常高&#xff0c;由于它底层的原因&#xff0c;它也可以实现排序&#xff0c;通过中序遍历可以输出我们的有序的数据&#xff…

安装gensim报错

安装gensim pip install --upgrade gensim装完以后注意一个 装了一堆库其实&#xff0c;看下对应的scipy版本是1.13.0 然后运行 import gensim报错&#xff1a; cannot import name ‘triu’ from ‘scipy.linalg’ https://www.soinside.com/question/brZ46N5EH7bk9xdVwXa…

华为OD机试 - 内存冷热标记(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

Springboot+Vue项目-基于Java+MySQL的高校心理教育辅导系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…