C++学习之运算符

简介: C++学习之运算符

C++有哪些运算符?

C++中提供了多种运算符,用于执行各种不同类型的操作。以下是一些常见的C++运算符:

  1. 算术运算符
  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取模(取余数)
  1. 赋值运算符
  • =:简单赋值
  • +=:加后赋值
  • -=:减后赋值
  • *=:乘后赋值
  • /=:除后赋值
  • %=:取模后赋值
  1. 比较运算符
  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于
  1. 逻辑运算符:
  • &&:逻辑与(and)
  • ||:逻辑或(or)
  • !:逻辑非(not)
  1. 位运算符:
  • &:按位与
  • |:按位或
  • ^:按位异或
  • ~:按位取反
  • <<:左移位运算符
  • >>:右移位运算符
  1. 递增和递减运算符:
  • ++:递增
  • --:递减
  1. 条件运算符:
  • ? ::三元条件运算符,用于根据条件选择不同的值
  1. 成员访问运算符:
  • .:点运算符用于访问类的成员
  • ->:箭头运算符用于访问指针所指向对象的成员
  1. 其他运算符:
  • sizeof:获取变量或数据类型的内存大小
  • &:取地址运算符,用于获取变量的地址
  • *:指针运算符,用于声明指针变量或解引用指针

以上仅列举了一些常用的C++运算符,还有其他一些特殊运算符和重载运算符可用于特定的情况。具体的运算符使用和语法,请参考C++语言的相关文档或教程。

算术运算符

C++提供了一系列的算术运算符,用于执行基本的算术操作。下面是C++中常见的算术运算符及其使用举例:

  1. 加法运算符 +
int a = 5;
int b = 3;
int sum = a + b; // sum = 8
  1. 减法运算符 -
int a = 5;
int b = 3;
int difference = a - b; // difference = 2
  1. 乘法运算符 *
int a = 5;
int b = 3;
int product = a * b; // product = 15
  1. 除法运算符 /
int a = 10;
int b = 3;//除数不能为0
int quotient = a / b; // quotient = 3 (整数除法取商) 
  1. 取模运算符 %
int a = 10;
int b = 3;
int remainder = a % b; // remainder = 1 (取余数)
  1. 自增运算符 ++
int a = 5;
a++; // a = 6, 后自增
++a; // a = 7, 前自增
  1. 自减运算符 --
int a = 5;
a--; // a = 4, 后自减
--a; // a = 3, 前自减

注意,上面使用的是整型变量,但算术运算符同样适用于其他支持数值类型的变量,如浮点数、长整型等。在使用算术运算符时,需根据数据类型和运算需求进行适当的类型转换和错误处理。

赋值运算符

C++中的赋值运算符用于将右侧表达式的值赋给左侧的变量或对象。以下是C++的赋值运算符和使用示例:

  1. =:简单赋值运算符
  • 将右侧表达式的值赋给左侧的变量或对象。
  • 示例:
int num1 = 10;
int num2;
num2 = num1; // 将 num1 的值赋给 num2
  1. 复合赋值运算符:
  • +=:加后赋值
  • -=:减后赋值
  • *=:乘后赋值
  • /=:除后赋值
  • %=:取模后赋值
  • 示例:
int num3 = 5;
num3 += 3; // 等价于 num3 = num3 + 3,即 num3 的值从 5 变为 8
  1. C++还提供了其他一些特殊的赋值运算符:
  • 位运算赋值运算符:&=、|=、^=、<<=、>>=
  • 成员访问运算符赋值:.=、->=
  • 其他自定义运算符的赋值形式

注意,赋值运算符将右侧表达式的值赋给左侧的变量或对象,并且返回赋值完成后的左侧操作数。赋值运算符通常用于初始化变量、更新变量的值或对对象进行赋值操作。

在使用赋值运算符时,需要注意数据类型和赋值操作的合法性。确保左侧和右侧的数据类型匹配,并且理解赋值运算符在内部的工作原理和优先级规则。

比较运算符

在C++中,比较运算符用于比较两个值的大小关系,返回一个布尔值(true或false)。以下是C++中常用的比较运算符:

  1. 等于(==):检查两个操作数是否相等。
    示例:
int a = 10;
int b = 20;
bool isEqual = (a == b); // false
  1. 不等于(!=):检查两个操作数是否不相等。
    示例:
int a = 10;
int b = 20;
bool isNotEqual = (a != b); // true
  1. 大于(>):检查左操作数是否大于右操作数。
    示例:
int a = 10;
int b = 20;
bool isGreater = (a > b); // false
  1. 小于(<):检查左操作数是否小于右操作数。
    示例:
int a = 10;
int b = 20;
bool isLess = (a < b); // true
  1. 大于等于(>=):检查左操作数是否大于等于右操作数。
    示例:
int a = 10;
int b = 20;
bool isGreaterOrEqual = (a >= b); // false
  1. 小于等于(<=):检查左操作数是否小于等于右操作数。
    示例:
int a = 10;
int b = 20;
bool isLessOrEqual = (a <= b); // true

注意,比较运算符可以用于不同类型的操作数,包括基本数据类型(如int、float等)和自定义类型(如字符串、对象等)。比较运算符返回的结果是一个布尔值,可用作条件判断或在逻辑表达式中使用。

逻辑运算符

在C++中,逻辑运算符用于处理布尔类型的表达式,并返回布尔值(true或false)。C++提供了以下逻辑运算符:

  1. 逻辑与运算符(&&):当两个操作数都为真(非零)时,结果为真,否则为假。
    示例:
int a = 5;
int b = 10;
int c = 15;
bool result = (a > 0) && (b < 20);
// 结果为真,因为 a > 0 和 b < 20 都是 true
bool result2 = (a < 0) && (b < 20);
// 结果为假,因为 a < 0 是 false
  1. 逻辑或运算符(||):当两个操作数中至少有一个为真(非零)时,结果为真,否则为假。
    示例:
int a = 5;
int b = 10;
int c = 15;
bool result = (a > 0) || (b < 20);
// 结果为真,因为 a > 0 是 true
bool result2 = (a < 0) || (b > 20);
// 结果为假,因为 a < 0 和 b > 20 都是 false
  1. 逻辑非运算符(!):用于取反操作,如果操作数为真,则结果为假(false),如果操作数为假,则结果为真(true)。
    示例:
bool a = true;
bool b = false;
bool result = !a;
// 结果为假,因为 a 是 true 的取反
bool result2 = !b;
// 结果为真,因为 b 是 false 的取反

注意,逻辑运算符的短路特性。在逻辑与运算中,如果左操作数为假,右操作数将不会被计算;而在逻辑或运算中,如果左操作数为真,右操作数将不会被计算。这种短路特性可以用于提高程序的效率和避免无效的计算。

逻辑运算符的优先级低于算术运算符和比较运算符,但高于赋值运算符。在复杂的表达式中,可以使用括号来明确指定运算顺序。

位运算符

在C++中,位运算符用于对整数类型的数据进行按位操作。下面列举了位运算符及其功能:

  1. 按位与(&):
  • 对两个数的每个对应位进行与操作,结果为1时才返回1,否则返回0。
  • 示例:a & b
  1. 按位或(|):
  • 对两个数的每个对应位进行或操作,结果为1时返回1,否则返回0。
  • 示例:a | b
  1. 按位异或(^):
  • 对两个数的每个对应位进行异或操作,相同为0,不同为1。
  • 示例:a ^ b
  1. 按位非(~):
  • 对一个数的每一位取反,即1变为0,0变为1。
  • 示例:~a
  1. 左移位(<<):
  • 将一个数的二进制表示向左移动n位,右侧空出的位置补0。
  • 示例:a << n
  1. 右移位(>>):
  • 将一个数的二进制表示向右移动n位,左侧空出的位置补原有符号位。
  • 示例:a >> n

上述位运算符可以用于整数类型的操作数,并能完成各种位级操作。请注意,在使用位运算时,应当确保理解操作数的二进制表示以及所采用的位操作逻辑。此外,还需要注意一些位运算操作的边界情况和可能的溢出问题。

递增和递减

在C++中,递增(++)和递减(–)运算符是用于增加或减少变量的值的操作符。它们可以应用于整数类型、指针类型和迭代器类型。

递增运算符有两种形式:前置递增和后置递增。

  • 前置递增(++i):先将变量增加1,然后返回新的值。
  • 后置递增(i++):先返回原始值,然后将变量增加1。

递减运算符也有相同的两种形式:前置递减和后置递减。

  • 前置递减(–i):先将变量减少1,然后返回新的值。
  • 后置递减(i–):先返回原始值,然后将变量减少1。

以下是一些示例代码,展示了递增和递减运算符的使用:

int i = 10;
int j = ++i; // 前置递增,i的值增加为11,然后将新值赋给j
int k = i++; // 后置递增,k的值为11,然后i的值增加为12
int n = 5;
int m = --n; // 前置递减,n的值减少为4,然后将新值赋给m
int p = n--; // 后置递减,p的值为4,然后n的值减少为3
int* ptr = &i;
++ptr; // 指针的前置递增,指向下一个内存位置
--ptr; // 指针的前置递减,指向上一个内存位置

注意,在表达式中递增和递减运算符的具体行为可能受到其他运算符的干扰,因此在编写代码时要注意运算符的优先级和相关规则。

三元运算符

C++中的三元运算符是一个条件运算符,也称为条件表达式。它由三个部分组成:一个条件表达式,一个“?”符号和两个结果表达式。

三元运算符的语法如下:

condition ? expression1 : expression2;

具体解释如下:

  • 如果 condition 为真(非零),则结果为 expression1
  • 如果 condition 为假(零),则结果为 expression2

示例:

int x = 10;
int y = 20;
int max = (x > y) ? x : y; // 如果 x 大于 y,将 x 赋值给 max,否则将 y 赋值给 max
std::cout << "Max value is: " << max << std::endl;

在上述示例中,如果 x 大于 y,则将 x 的值赋给 max,否则将 y 的值赋给 max

三元运算符是一种简洁的方式来根据条件选择不同的值或表达式。然而,过度使用三元运算符可能会导致代码可读性降低,因此在使用时需注意平衡简洁性和可读性。

成员访问运算符

C++中的成员访问运算符用于访问类或结构体对象的成员。有两种形式的成员访问运算符:点运算符(.)和箭头运算符(->)。

  1. 点运算符(.):
  • 点运算符用于访问类或结构体对象的成员。
  • 对于实际对象,使用对象名加上点运算符来访问成员变量或成员函数。
  • 示例:
class MyClass {
public:
    int myVariable;
    void myFunction() {
        // 成员函数的实现
    }
};
MyClass obj;
obj.myVariable = 10; // 使用点运算符访问成员变量
obj.myFunction(); // 使用点运算符调用成员函数
  1. 箭头运算符(->):
  • 箭头运算符用于访问指向类或结构体对象的指针的成员。
  • 在指针前加上箭头运算符来访问指针所指向的对象的成员变量或成员函数。
  • 示例:
MyClass* ptr = new MyClass();
ptr->myVariable = 20; // 使用箭头运算符访问指针所指向的对象的成员变量
ptr->myFunction(); // 使用箭头运算符调用指针所指向的对象的成员函数
delete ptr; // 释放内存

注意,使用成员访问运算符时,前面的操作数必须是类或结构体类型的对象或指针,后面跟着成员的名称。如果成员是函数,则需要使用函数调用的括号。

成员访问运算符是C++中常用的运算符之一,它使得对对象的成员进行操作变得更加简单和方便。

其他运算符

除了前面提到的位运算符、递增和递减运算符、三元条件运算符和成员访问运算符之外,C++还提供了一些其他的运算符。以下是一些常见的其他运算符:

  1. sizeof 运算符:
  • sizeof 运算符用于获取变量或数据类型在内存中的大小(以字节为单位)。
  • 示例:
int num;
std::cout << "Size of num: " << sizeof(num) << " bytes" << std::endl;
int array[5];
std::cout << "Size of array: " << sizeof(array) << " bytes" << std::endl;
struct MyStruct {
    int a;
    double b;
    char c;
};
std::cout << "Size of MyStruct: " << sizeof(MyStruct) << " bytes" << std::endl;
  1. & 运算符:
  • & 运算符是取地址运算符,用于获取变量的内存地址。
  • 示例:
int num = 10;
int* p = &num; // 获取 num 的地址并赋值给指针 p
  • 运算符:
  • * 运算符是指针运算符,用于声明指针变量和解引用指针。
  • 示例:
int num = 10;
int* p = &num; // 声明一个指向 int 类型的指针并把 num 的地址赋值给它
int value = *p; // 解引用指针 p,获取它指向的值
  1. , 运算符:
  • , 运算符用于多个表达式之间的分隔,按照顺序依次执行这些表达式,并返回最后一个表达式的结果。
  • 示例:
int a = 1, b = 2, c = 3;
int sum = (a += 1, b += 2, c += 3); // 逗号运算符被用于逐个增加 a、b 和 c 的值后将最后的 c 的值赋给 sum

以上是一些常见的 C++ 运算符,它们用于不同的操作和场景。具体运算符的详细使用方法和语法,请参考C++的相关文档或教程。

题外话

int a = 10;
int b = 20;
int max = (a > b) ? a : b;
( (a > b) ? a : b)=100;//结果b=100;

关注我,不迷路,共学习,同进步

关注我,不迷路,同学习,同进步

相关文章
|
3月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
76 0
|
18天前
|
编译器 C语言 C++
配置C++的学习环境
【10月更文挑战第18天】如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。 一、本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 二、文本编辑器 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。 C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 Visual Studio Code:虽然它是一个通用的文本编辑器,但它有很多插
|
1月前
|
Java 编译器 C++
c++学习,和友元函数
本文讨论了C++中的友元函数、继承规则、运算符重载以及内存管理的重要性,并提到了指针在C++中的强大功能和使用时需要注意的问题。
19 1
|
2月前
|
C++
【C++基础】运算符详解
这篇文章详细解释了C++中运算符的用法,包括算术运算符、赋值运算符、比较运算符和逻辑运算符,以及它们在表达式中的作用和示例。
26 2
|
3月前
|
C++
c++学习笔记02 运算符
C++学习笔记,介绍了C++中的运算符,包括基本的加减乘除、求模、前后置递增递减、赋值运算符、比较运算符和逻辑运算符的使用及其注意事项。
38 6
|
4月前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
|
4月前
|
人工智能 分布式计算 Java
【C++入门 一 】学习C++背景、开启C++奇妙之旅
【C++入门 一 】学习C++背景、开启C++奇妙之旅
|
4月前
|
存储 自然语言处理 编译器
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
|
4月前
|
小程序 C++
【C++入门 二 】学习使用C++命名空间及其展开
【C++入门 二 】学习使用C++命名空间及其展开
|
4月前
|
存储 C++ 索引