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;

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

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

相关文章
|
1天前
|
存储 编译器 C++
|
1天前
|
算法 数据处理 C++
|
1天前
|
数据安全/隐私保护 C++
|
1天前
|
存储 开发框架 Java
|
1天前
|
存储 编译器 数据安全/隐私保护
|
1天前
|
C++
C++基础知识(四:类的学习)
类指的就是对同一类对象,把所有的属性都封装起来,你也可以把类看成一个高级版的结构体。
|
1天前
|
算法 C++ 容器