C++ 运算符

        在本文中,我们将借助示例学习C ++中不同类型的运算符。 在编程中,运算符是对值或变量进行运算的符号。例如,+是用于加法的运算符,而 - 是用于减法的运算符。

C ++中的运算符可以分为六种类型:

  1. 算术运算符

  2. 赋值运算符

  3. 关系运算符

  4. 逻辑运算符

  5. 按位运算符

  6. 其他运算符

1. C ++算术运算符

算术运算符用于对变量和数据执行算术运算。例如,

a + b;

        在此,+运算符用于将两个变量a和b相加。同样,C ++中还有其他各种算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:

运算符 描述 实例
+ 把两个操作数相加 A + B 将得到 30
- 从第一个操作数中减去第二个操作数 A - B 将得到 -10
* 把两个操作数相乘 A * B 将得到 200
/ 分子除以分母 B / A 将得到 2
% 取模运算符,整除后的余数 B % A 将得到 0
++ 自增运算符,整数值增加 1 A++ 将得到 11
-- 自减运算符,整数值减少 1 A-- 将得到 9

示例1:算术运算符 

#include
int main() {

	int a, b;
	a = 2;
	b = 4;
	// 打印a和b的和
	std::cout << "a+b=" << a + b << std::endl; // 6

	// 打印a和b的差
	std::cout << "a-b=" << a - b << std::endl; // -2
	
	// 打印a和b的乘积
	std::cout << "a*b=" << a * b << std::endl; // 8

	// 打印a除以b
	std::cout << "a/b=" << a / b << std::endl; // a,b均为int类型,a/b也为int型,故a/b=0

	// 打印a和b的模(余数)
	std::cout << "a%b=" << a % b << std::endl; // 2
 	return 0;
}



/ 除法运算符

注意我们上述程序中的操作(a / b)。  / 运算符是除法运算符。

        从上面的示例可以看到,如果一个整数除以另一个整数,我们将得到商。但是,如果除数或被除数是浮点数,我们将以小数形式得到结果。如下例所示。

#include
#include
int main() {

	int b;
	float a;
	a = 2.0;
	b = 4;
	//如果除数或被除数是浮点数,我们将以小数形式得到结果。
	std::cout << "a/b:" << a/b << std::endl; // a/b=0.5
	std::cout << "a的数据类型为:" << typeid(a).name() << std::endl;//a的数据类型为:float
	
}
在C++中,

7/2 = 3
7.0 / 2 = 3.5
7 / 2.0 = 3.5
7.0 / 2.0 = 3.5

% 模运算符

模运算符 % 计算余数。当a (9)除以b(4),余数为1

注意:%操作只能与整数使用。

自增和自减运算符

C ++还分别提供了递增和递减运算符:++和--。

++将操作数的值增加1

-- 将操作数的值减少1

例如,

int num = 5;

// num增加1
++num;

这里,num的值从初始值5增加到6。

#include
int main() {

	int num = 5;
	num++; // num自增
	++num; // num自增
	std::cout << "num的取值为:" << num << std::endl; // 输出7

}

在上面的程序中,我们使用++和-运算符作为前缀。 我们还可以将这些运算符用作后缀。这些运算符用作前缀与用作后缀时略有不同。详细请参考下面这篇博文:

自增自减运算符i++与++i的区别-CSDN博客

2. C ++ 赋值运算符

在C ++中,赋值运算符用于将值赋给变量。例如,

// 将5赋值给a
a = 5;

这里,我们给变量a赋了一个值5。

运算符 实例 等同
= a = b; a = b;
+= a += b; a = a + b;
-= a -= b; a = a - b;
*= a *= b; a = a * b;
/= a /= b; a = a / b;
%= a %= b; a = a % b;

3. C ++关系运算符

关系运算符用于检查两个操作数之间的关系。例如,

// 检查a是否大于b
a > b;

在这里,>是一个关系运算符。它检查是否a大于b。

如果该关系为true,则返回1;如果该关系为false,则返回0

假设变量 A 的值为 5,变量 B 的值为 11,则:

运算符 描述 实例
== 检查两个操作数的值是否相等,如果相等则条件为真。 (A == B) 不为真。
!= 检查两个操作数的值是否相等,如果不相等则条件为真。 (A != B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 (A > B) 不为真。
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 (A < B) 为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 (A >= B) 不为真。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 (A <= B) 为真。

 

4. C ++逻辑运算符

逻辑运算符用于检查表达式是true还是false。如果表达式为true,则返回1;如果表达式为false,则返回0

p>假设变量 A 的值为 1,变量 B 的值为 0,则:

运算符 描述 实例
&& 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 (A && B) 为假。
|| 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 (A || B) 为真。
! 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 !(A && B) 为真。

例如: 

假设,
a = 5
b = 8

假如,

(a > 3) && (b > 5) 计算结果为 true
(a > 3)  && (b < 5) 计算结果为 false

(a > 3) || (b > 5) 计算结果为 true
(a > 3) || (b < 5) 计算结果为 true
(a < 3) || (b < 5) 计算结果为 false

!(a == 3) 计算结果为 true
!(a > 3) 计算结果为 false

 

5. C ++按位运算符

在C ++中,按位运算符用于对单个位执行操作。 它们只能与char和int数据类型一起使用。

下表显示了 C++ 支持的位运算符。假设变量 A 的值为 60(0011 1100),变量 B 的值为 13(0000 1101),则:

运算符 描述 实例
& 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 (A & B) 将得到 12,即为 0000 1100
| 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 (A | B) 将得到 61,即为 0011 1101
^ 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 (A ^ B) 将得到 49,即为 0011 0001
~ 二进制补码运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0。 (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。
<< 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 A << 2 将得到 240,即为 1111 0000
>> 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 A >> 2 将得到 15,即为 0000 1111

杂项运算符

下表列出了 C++ 支持的其他一些重要的运算符。

运算符 描述
sizeof sizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。
Condition ? X : Y 条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。
, 逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。
.(点)和  ->(箭头) 成员运算符用于引用类、结构和共用体的成员。
Cast 强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。
& 指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。
* 指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。

 

C++ 中的运算符优先级

        运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。

        例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。

        下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

类别  运算符  结合性 
后缀  () [] -> .  ++   - -   从左到右 
一元  +  -   !  ~  ++  - -   (type)*  &  sizeof  从右到左 
乘除  *  /  %  从左到右 
加减  +  -  从左到右 
移位  << >>  从左到右 
关系  < <=  > >=  从左到右 
相等  ==  !=  从左到右 
位与 AND  从左到右 
位异或 XOR  从左到右 
位或 OR  从左到右 
逻辑与 AND  &&  从左到右 
逻辑或 OR  ||  从左到右 
条件  ?:  从右到左 
赋值  =  +=  -=  *=  /=  %=>>=  <<=  &=  ^=   |=  从右到左 
逗号  从左到右 

示例:运算符优先级 

#include

int main(){
	int num1, num2, num3;
	num1 = 5 - 2 * 6;
	num2 = 5 - (2 * 6);
	num3 = (5 - 2) * 6;
	std::cout << "num1为:" << num1 << std::endl; // num1为:-7
	std::cout << "num2为:" << num2 << std::endl; // num2为:-7
	std::cout << "num3为:" << num3 << std::endl; // num3为:18
	return 0;
}

 

你可能感兴趣的:(C++,c++,算法,开发语言)