C++入门编程----C++运算符(8)
什么是运算符
运算符是让程序执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符。C++运算符分别有算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、移位运算符、sizeof运算符、三目运算符、逗号运算符和域解析运算符。
算术运算符
C++中的算术运算符用于进行数学运算,包括加法、减法、乘法、除法和取模等。以下是C++算术运算符的介绍和使用:
- 加法运算符(+) :用于将两个数值相加,或者将一个数值与一个字符串连接起来。例如:
点击查看代码
#include <iostream>
int main() {
int a = 5;
int b = 3;
int sum = a + b; // 8
std::cout << sum;
}
2. 减法运算符(-) :用于从一个数值中减去另一个数值。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 10;
int b = 2;
int d = a - b; // 8
std::cout << d;
}
3. 乘法运算符(*) :用于将两个数组相乘。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
int b = 3;
int product = a * b; // 15
std::cout << product;
}
4. 除法运算符(/):用于将一个数组除以另一个数值。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 10;
int b = 3;
int quotient = a / b; // 3
std::cout << quotient;
}
注意,上述示例,因为计算结果的变量是整型,所以除法运算符会截取整数部分,小数部分会被忽略。如果需要保留小数部分,计算结果的变量可以使用浮点数类型。
5. 取模运算符(%):用于计算两个整数相除的余数。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 10;
int b = 3;
int c = a % b; // 1
std::cout<< c;
}
6. 一元加运算符(+):用于将数值增加1。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
a++; // a的值变为6
std::cout << a << std::endl ;
/*++a; // 7
std::cout << a ;*/
}
7. 一元减运算符(-):用于将数值减少1。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
a--; // 先自减再赋值,a变为4
std::cout << a << std::endl;
/*--a; // 先赋值再自减,a的值变为3
std::cout << a;*/
}
**关系运算符**
C++的关系运算符用于比较两个值之间的关系,如等于、不等于、大于、小于等。以下是C++关系运算符的介绍和使用:
1. 等于运算符(==):用于判断两个值是否相等。例如:
点击查看代码
int main()
{
int a = 5;
int b = 5;
if(a == b)
{
// 如果a等于b,则执行这里的代码
std::cout << "相等";
}
}
2. 不等于运算符(!=) :用于判断两个值是否不相等。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
int b = 3;
if(a != b)
{
// 如果a不等于b,则执行这里的代码
std::cout << "不相等";
}
}
3. 大于运算符(>) :用于判断一个值是否大于另一个值。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
int b = 3;
if(a > b)
{
// 如果a大于b,则执行这里的代码
std::cout << "a大于b";
}
}
4. 小于运算符(<) :用于判断一个值是否小于另一个值。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 3;
int b = 5;
if(a < b)
{
// 如果a小于b,则执行这里的代码
std::cout << "a小于b";
}
}
5. 大于等于运算符(>=) :用于判断一个值是否大于或等于另一个值。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
int b = 3;
if(a >= b)
{
// 如果a大于或等于b,则执行这里的代码
std::cout << "a大于或等于b";
}
}
6. 小于等于运算符(<=):用于判断一个值是否小于或等于另外一个值。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 3;
int b = 5;
if(a < b)
{
// 如果a 小于或等于b,则执行这里的代码
std::cout << "a小于或等于b";
}
}
**逻辑运算符**
C++的逻辑运算符用于对布尔值进行逻辑运算,包括逻辑与(&&)、逻辑或(||)、逻辑非(!)。下面是逻辑运算符的介绍和使用:
1. 逻辑与运算符(&&) :用于判断两个布尔值是否都为真。例如:
点击查看代码
#include <iostream>
int main()
{
bool a = true;
bool b = true;
if(a && b)
{
// 如果a和b都为真,则执行这里的代码
std::cout << "a和b都为真";
}
}
2. 逻辑或运算符(||):用于判断两个布尔值是否有一个为真。例如:
点击查看代码
#include <iostream>
int main()
{
bool a = true;
bool b = false;
if(a || b)
{
// 如果a或b有一个为真,则执行这里的代码
std::cout << "a或b有一个为真";
}
}
3. 逻辑非运算符(!) :用于对一个布尔值进行取反操作。例如:
点击查看代码
#include <iostream>
int main()
{
bool a = false;
if (!a)
{
// 如果a为真,则执行这里的代码
std::cout << "将a取反等于真";
}
}
由于逻辑运算符的优先级低于算术运算符和关系运算符,但高于赋值运算符。因此,在复杂的表达式中,可以使用括号来明确指定运算顺序。
例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
int b = 3;
int c = 2;
// 使用括号明确运算顺序,先计算加法再计算关系运算,最后进行逻辑与运算
int sum = (a + b) && (b > c); // 1
if(sum)
{
// 如果sum为真,则执行这里的代码
std:: cout << sum;
}
}
**赋值运算符**
1. 赋值运算符(=) :用于将一个值赋给一个变量。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5; // 将5赋值给变量a
std::cout << a;
}
2. 加等赋值运算符(+=) :用于将一个值加到一个变量上,并将结果赋值给该变量。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
a += 3; // 将3加到a上,并将结果赋值给a 5 + 3 = 8
std::cout << a;
}
3. 减等赋值运算符(-=):用于从一个变量中减小一个值,并将结果赋值给该变量。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 10;
a -= 3; // 从a中减去3,并将结果7赋值给a;
std::cout << a;
}
4. 乘等赋值运算符(*=) :用于将一个变量的值乘以一个值,并将结果赋值给该变量。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
a *= 3; // 将a的值乘以3,并将结果15赋值给a
std::cout << a;
}
5. 除等赋值运算符(/=):用于将一个变量的值除以一个值,并将结果赋值给该变量。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 10;
a /= 3; // 将a的值除以3,并将结果3赋值给a
std::cout << a;
}
6. 取模等赋值运算符 (%=) :用于计算两个值的余数,并将结果赋值给一个变量。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 10;
a %= 3; // 将a的值除以3的余数1赋值给a
std::cout << a;
}
**位运算符**
C++的位运算符用于对二进制位进行操作。以下是C++位运算符的介绍和使用:
1. 位与运算符(&):用于对两个二进制数进行按位与操作。只有当两个相应的二进制位都为1时,结果的相应位才为1。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 60; // 二进制表示为 0010 1100
int b = 13; // 二进制表示为 0000 1101
int c = a & b; // 结果为0000 1100,即十进制中的12
std::cout << c;
}
2. 位或运算符(|):用于对两个二进制数进行按位或操作。只要两个相应的二进制位中有一个为1,结果的相应位就为1。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 60; // 二进制表示为0010 1100
int b = 13; // 二进制表示为0000 1101
int c = a | b; // 结果为0010 1101,即十进制中的61
std::cout << c;
}
3. 位异或运算符(^) :用于对两个二进制数进行按位异或操作。当两个相应的二进制位不同时,结果的相应位为1。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 60; // 二进制表示为0010 1100
int b = 13; // 二进制表示为0000 1101
int c = a ^ b; // 结果为0010 0001,即十进制中的49
std::cout << c;
}
4. 位非运算符(~):用于对一个二进制数进行按位非操作。当相应的二进制位为1时,结果的相应位为0;当相应的二进制位为0时,结果的相应位为1。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 60; // 二进制表示为0010 1100
int b = ~a; // 二进制表示为1101 0011,即十进制中的-61
std::cout << b;
}
tips:由于位运算符对整数进行低级操作,因此它们经常用于优化性能,特别是在处理网络数据、硬件编程和图形处理等场景。
**移位运算符**
C++中的移位运算符用于对二进制进行左移和右移操作。以下是C++移位运算符的介绍和使用:
1. 左移运算符(<<):用于将一个整数的二进制位向左移动指定的位数。
在左移操作中,左侧的空位将用0来填充。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 5; // 二进制表示为0000 0101
// 向左移动2位
int b = a << 2; // 结果为0001 0100,即十进制中的20
std::cout << b;
}
2. 右移运算符(>>):用于将一个整数的二进制位向右移动指定的位数。
在右移操作中,左侧的空位将根据该数的符合来填充。对于有符合整数,C++采用算术右移,即将最高位(符号位)复制到左侧的空位中。对于无符合整数,左侧的空位将用0来填充。例如:
点击查看代码
#include <iostream>
int main()
{
int a = 20; // 二进制数表示为0010 0100
// 向右移动2位
int b = a >> 2; // 结果为0000 0101 // 即十进制中的5
std::cout << b;
}
tips:使用移位运算符时需要注意数据类型的位数,确保在进行移位操作时不会导致数据溢出或丢失。移位运算符常用于性能敏感的代码中,如低级编程、图形处理、加密等场景。
**sizeof运算符**
sizeof是C++中非常有用的运算符,它用于获取数据类型或对象在内存中所占用的字节数。以下是sizeof运算符的介绍和使用:
基本语法:
sizeof(expression);
使用场景:
1. 获取基本数据类型的大小:例如,sizeof(int) 可以返回int类型在内存中占有的字节数。
2. 获取数组的总大小:例如,sizeof(array)可以返回数组的总字节大小。
3. 获取对象的大小:例如,sizeof(object)可以返回对象在内存中占用的字节数。
应用示例:
点击查看代码
#include <iostream>
int main()
{
int a = 5;
int b[10];
int *p = &a;
std::cout << "Size of int:"<< sizeof(int) <<"bytes\n" ; // 通常是4字节,具体取决于平台
std::cout << "Size of array:"<< sizeof(b) <<"bytes\n" ; // 返回整个数组的大小,通常是40字节。(假设int是4字节)
std::cout << "Size of pointer:"<< sizeof(p) <<"bytes\n" ; // 返回指针的大小,通常是8字节 (假设64位系统)
std::cout << "Size of object:"<< sizeof(a) <<"bytes\n" ; //返回对象的大小, 通常是4字节(假设int是4字节)
}
注意事项:
1. sizeof返回的是size_t类型,这是一种无符号整数类型。
2. sizeof不会计算动态分配的内存。例如,如果你使用new动态地分配了一个数组,那么sizeof将不会计算这部分内存。
3. 对于函数参数,sizeof返回的是参数的类型大小,而不是实际存储在内存中的变量大小。例如,如果函数接受一个指针作为参数,那么sizeof将返回指针的大小,而不是它所指向的数据大小。
**三目运算符**
C++的三目运算符是一种简结的if-else语句,用于根据条件选择两个值中的一个。它的语法如下:
condition ? value_if_true : value_if_false;
语法的condition是一个布尔表达式,如果它的值为true,则放回value_if_true的值;如果它的值为false,则返回value_if_false的值。示例代码如下:
点击查看代码
#include <iostream>
int main()
{
int x = 5;
std::cout << (x > 0 ? "x是正数" : "x不是正数") << std::endl;
}
三目运算符可以用于任何需要选择两个值的情况,不仅仅是if-else语句,还可以使用它来设置变量的值,示例代码如下:
点击查看代码
#include <iostream>
int main()
{
int a = 10;
int b = 12;
int c = (a > b ? a : b);
// 输出结果为12
std::cout<< c;
}
**逗号运算符**
逗号运算符在C++中的特殊的运算符,它允许你在一个语句中执行多个操作,但只返回最后一个操作的结果。逗号运算符的语法如下:
expression1,expression2,...,expressionN;
逗号运算符按照从左到右的顺序依次执行每个表达式,并返回最后一个表达式的值。每个表达式可以是任何合法的C++ 表达式,包括变量赋值、函数调用等,示例代码如下:
点击查看代码
#include <iostream>
int main()
{
// for循环中初始化多个变量
for(int i = 0, j = 0; i < 10; i++,j--)
{
// do something
}
// 执行多个操作
int a = 5;
int b = 10;
int c = (a+=2,b--,a + b); // c的值为16
std::cout << c;
}
**域解析运算符**
C++中的域解析运算符(::) 用于指定类或命名空间的成员。它可以用于访问静态成员、常量成员和非静态成员。
域解析运算符的语法如下:
class_name::member_name;
语法的class_name是类名,member_name是成员名。关于域解析运算符的使用,将会在类或命名空间的内容再作详细讲述。
C++入门编程----C++运算符(8)的更多相关文章
- msp430入门编程05
msp430中C语言的运算符和表达式 msp430中C语言的程序结构06 msp430中C语言的函数及实现07 msp430中C语言操作端口I/O10 msp430中C语言的模块化头文件及实现11 m ...
- Linux学习——shell编程之运算符
shell编程之运算符 一:shell中常见算术运算符号和优先级 二:算术运算符 Shell 变量:是弱类型!不能进行加减乘除!比较麻烦! 例子 :shell变量弱类型 a=11 b=22 echo ...
- Storm实时计算:流操作入门编程实践
转自:http://shiyanjun.cn/archives/977.html Storm实时计算:流操作入门编程实践 Storm是一个分布式是实时计算系统,它设计了一种对流和计算的抽象,概念比 ...
- msp430入门编程50
msp430中项目编程套路 msp430入门编程 msp430入门学习
- msp430入门编程47
msp430中C语言的人机交互--菜单退出 msp430入门编程 msp430入门学习
- msp430入门编程17
msp430中C语言的寄存器操作 msp430入门学习 msp430入门编程
- msp430入门编程27
msp430中C语言开发工具调试程序 msp430入门学习 msp430入门编程
- msp430入门编程26
msp430中C语言开发工具应用 msp430入门学习 msp430入门编程
- msp430入门编程25
msp430中C语言开发环境搭建 msp430入门学习 msp430入门编程
- msp430入门编程24
msp430中C语言的扩展--段的使用 msp430入门学习 msp430入门编程
随机推荐
- go中的sync.RWMutex源码解读
读写锁 前言 什么是读写锁 看下实现 读锁 RLock RUnlock 写锁 Lock Unlock 问题要论 写操作是如何阻止写操作的 写操作是如何阻止读操作的 读操作是如何阻止写操作的 为什么写锁 ...
- Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!
Milvus 2.3.功能全面升级,核心组件再升级,超低延迟.高准确度.MMap一触开启数据处理量翻倍.支持GPU使用! 1.Milvus 2.3版本全部升级简介 Milvus 2.3.0 不仅包含大 ...
- 【链表】【python】力扣24. 两两交换链表中的节点【超详细的注释和解释】
目录 说在前面的话 前言 一.题目(力扣24. 两两交换链表中的节点) 二.题目分析 实现完整代码(Python实现) 总结 说在前面的话 博主也好长一段时间没有更新力扣的刷题系列了,今天给大家带来一 ...
- GD库常用实例
GD库常用实例 一.图片水印 1.实现步骤 打开原图(也叫操作的目标图片) 打开水印图(也叫水印来源图片) 使用 imagecopymerge 将小图合并至大图的指定位置 输出图片 销毁资源 2. ...
- 【求助】navicat导入monogdb数据报错
navicat在进行mongodb数据导入时报错 Navicat Premium 版本 16.1.3 (64-bit) Windows 11 Unknown Internal Error (A7052 ...
- 23.2 SEH之异常处理--《Windows核心编程》结构化异常处理
(structured exception handing)SEH 包含终止处理和异常处理.本章讨论异常处理. 当一个硬件或者软件异常被抛出的时候,操作系统会给我们程序一个查看异常类型的机会,并允 ...
- 5.字典--《Python编程:从入门到实践》
5.1 字典 在 Python 中,字典是一系列键-值对.键不能重复,否则对应的值是后面一个. 5.1.1 键-值队的添加与修改 alien_0 = {'color': 'green', 'poi ...
- [Ngbatis源码学习] Ngbatis 源码学习之资源加载器 DaoResourceLoader
Ngbatis 源码学习之资源加载器 DaoResourceLoader DaoResourceLoader 是 Ngbatis 的资源文件加载器,扩展自 MapperResourceLoader.本 ...
- NC18389 收益
题目链接 题目 题目描述 小N是一家金融公司的项目经理.他准备投资一个项目,这个项目要融资L元,融资成功后会得到M元的利润.现在有n个客户.对于第i个客户,他有mi元钱.小N承诺假如最后筹够钱,会给这 ...
- Zabbix 配置笔记
Zabbix Server 安装参考 https://www.cnblogs.com/clsn/p/7885990.html 安装脚本 #!/bin/bash #clsn #设置解析 注意:网络条件较 ...