C++ 中的运算符及示例:定义、类型和程序

什么是运算符?

运算符是用于对操作数执行运算的符号。运算符操作操作数。运算可以是算术运算或逻辑运算。C++中有不同类型的运算符用于执行不同的运算。

考虑以下操作

a = x + y;

在上面的语句中,x和y是操作数,而+是加法运算符。当C++编译器遇到上述语句时,它将把x和y相加,并将结果存储在变量a中。

C++中的运算符类型

C++中主要有6种不同类型的运算符

  1. 算术运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 位运算符
  5. 赋值运算符
  6. 其他运算符

算术运算符

它们是用于执行算术/算术运算的运算符类型。它们包括

运算符 描述
+ 加法运算符 将两个操作数相加。
– 减法运算符 将第一个操作数减去第二个操作数。
* 乘法运算符 将两个操作数相乘。
/ 除法运算符。 用分子除以分母。
% 模运算符 返回除法后的余数。
++ 增量运算符 将整数值增加1。
— 减量运算符。 将整数值减少1。

例如

#include <iostream>
using namespace std;
int main() {
	int a = 11;
	int b = 5;
	int c;

	cout << "a + b is :" << a+b << endl; //11+5

	cout << "a - b is :" << a-b << endl; //11-5

	cout << "a * b is :" << a*b << endl; //11*5

	cout << "a / b is :" << a/b << endl; //11/5

	cout << "a % b is :" << a%b << endl; //11%5

	cout << "a++ is :" << a++ << endl; //11++

	cout << "a-- is :" << a-- << endl; //12--

	return 0;
}

输出

Arithmetic Operators

这是代码的屏幕截图:

Arithmetic Operators

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  3. 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
  4. 声明一个整数变量a并将其初始化为11。
  5. 声明一个整数变量b并将其初始化为5。
  6. 声明一个整数变量c。
  7. 在控制台上打印a+b运算值以及其他文本。
  8. 在控制台上打印a-b运算值以及其他文本。
  9. 在控制台上打印a*b运算值以及其他文本。
  10. 在控制台上打印a/b运算值以及其他文本。
  11. 在控制台上打印a%b运算值以及其他文本。
  12. 在控制台上打印a++运算值以及其他文本。
  13. 在控制台上打印a--运算值以及其他文本。
  14. 如果程序运行正常,main() 函数应返回一个值。
  15. main() 函数体结束。

关系运算符

这些类型的运算符用于对操作数进行比较。例如,您可能需要知道哪个操作数大于另一个,或者小于另一个。它们包括

运算符 描述
== 等于运算符。 检查两个操作数的值是否相等。
!= 不等于运算符 检查两个操作数的值是否相等。
> 大于运算符 检查左操作数的值是否大于右操作数的值。
< < 小于运算符。 检查左操作数的值是否小于右操作数的值。
>= 大于或等于运算符 检查左操作数的值是否大于或等于右操作数的值。
<= 小于或等于运算符。 检查左操作数的值是否小于或等于右操作数的值。

例如

#include <iostream>
using namespace std;

int main() {
	int a = 11;
	int b = 5;

	cout << "a=11, b=5" << endl;
	if (a == b) {
		cout << "a == b is true" << endl;
	}
	else {
		cout << " a == b is false" << endl;
	}

	if (a < b) {
		cout << "a < b is true" << endl;
	}
	else {
		cout << "a < b is false" << endl;
	}

	if (a > b) {
		cout << "a > b is true" << endl;
	}
	else {
		cout << "a > b is false" << endl;
	}

	return 0;
}

输出

Relational Operators

这是代码的屏幕截图:

Relational Operators

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  3. 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
  4. 声明一个整数变量a并将其初始化为11。
  5. 声明一个整数变量b并将其初始化为5。
  6. 在控制台上打印一些文本,说明变量a和b的值。
  7. 在if决策语句中执行算术运算a==b,以了解其为真还是为假。{ 标志着if语句体块的开始。
  8. 如果上述if语句为真,则在控制台上打印的文本。这不会被执行。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着if语句体块的结束。
  9. 上述if语句的else部分。它说明了如果a==b运算为假时该做什么。
  10. 如果上述if语句为假,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着else语句体块的结束。
  11. 在if决策语句中执行算术运算a
  12. 如果上述if语句为真,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着if语句体块的结束。
  13. 上述if语句的else部分。它说明了如果a
  14. 如果上述if语句为假,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着else语句体块的结束。
  15. 在if决策语句中执行算术运算a>b,以了解其为真还是为假。{ 标志着if语句体块的开始。
  16. 如果上述if语句为真,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着if语句体块的结束。
  17. 上述if语句的else部分。它说明了如果a>b运算为假时该做什么。
  18. 如果上述if语句为假,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着else语句体块的结束。
  19. 如果程序运行正常,main() 函数应返回一个值。
  20. main() 函数体结束。

逻辑运算符

逻辑运算符组合了两个或多个约束/条件。逻辑运算符还补充了对原始条件进行评估。它们包括

运算符 描述
&& 逻辑与运算符。 当两个操作数都不是零时,条件为真。
|| 逻辑或运算符。 当其中一个操作数为非零时,条件为真。
! 逻辑非运算符。 它反转操作数的逻辑状态。如果操作数为真,则!运算符将其变为假。

例如

#include <iostream> 
using namespace std;
int main()
{
	int a = 5, b = 2, c = 6, d = 4;
	if (a == b && c > d)
		cout << "a equals to b AND c is greater than d\n";
	else
		cout << "AND operation returned false\n";

	if (a == b || c > d)
		cout << "a equals to b OR c is greater than d\n";
	else
		cout << "Neither a is equal to b nor c is greater than d\n";

	if (!b)
		cout << "b is zero\n";
	else
		cout << "b is not zero";

	return 0;
}

输出

Logical Operators

这是代码的屏幕截图:

Logical Operators

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  3. 调用 main() 函数,程序的逻辑应添加到其中。
  4. { 标记 main() 函数体的开始。
  5. 声明四个整数变量a、b、c和d,并为它们赋值。
  6. 在if语句中使用&&(AND)运算符。它连接了两个条件:a等于b,并且a大于b。第一个条件为假,第二个条件为真。False&&true为False,因此,if的结果为false。
  7. 如果上述if语句为真,则在控制台上打印的文本。这不会被执行。
  8. 如果上述if语句为假,则执行的部分。
  9. 如果if语句为假,则在控制台上打印的文本。这将执行。
  10. 在if语句中使用||(OR)运算符。它连接了两个条件:a等于b,并且a大于b。第一个条件为假,第二个条件为真。False||true为True,因此,if的结果为true。
  11. 如果上述if语句为真,则在控制台上打印的文本。这将执行。
  12. 如果上述if语句为假,则执行的部分。
  13. 如果if语句为假,则在控制台打印的文本。这不会被执行。
  14. 检查变量的值是否为0。
  15. 如果上述if语句为真,则在控制台上打印的文本。这不会被执行。
  16. 如果上述if语句为假,则执行的部分。
  17. 如果if语句为假,则在控制台上打印的文本。这将执行。
  18. 如果程序运行正常,main() 函数应返回一个值。
  19. main() 函数体结束。

位运算符

位运算符对操作数执行位级别运算。首先,运算符被转换为位级别,然后对操作数执行运算。当位级别的算术运算(如加法和减法)完成时,结果可以更快地获得。它们包括

运算符 描述
& (按位与)。 它接受两个数字(操作数),然后对两个数字的每一位执行AND运算。如果两者都为1,则AND返回1,否则返回0。
| (按位或) 接受两个数字(操作数),然后对两个数字的每一位执行OR运算。如果其中一位为1,则返回1。
^ (按位异或) 接受两个数字(操作数),然后对两个数字的每一位执行XOR运算。如果两位不同,则返回1。
<< (左移) 接受两个数字,然后左移第一个操作数的位。第二个操作数决定移位的总位数。
>> (右移) 接受两个数字,然后右移第一个操作数的位。第二个操作数决定移位的位数。
~ (按位非)。 接受一个数字,然后反转其所有位。
#include <iostream>
using namespace std;

int main() {
	unsigned int p = 60;	  // 60 = 0011 1100  
	unsigned int q = 13;	  // 13 = 0000 1101
	int z = 0;

	z = p & q;
	cout << "p&q is : " << z << endl; // 12 = 0000 1100

	z = p | q;
	cout << "p|q is : " << z << endl; // 61 = 0011 1101

	z = p ^ q;
	cout << "p^q is : " << z << endl; // 49 = 0011 0001

	z = ~p;
	cout << "~p is : " << z << endl; // -61 = 1100 0011

	z = p << 2;
	cout << "p<<2 is: " << z << endl; // 240 = 1111 0000

	z = p >> 2;
	cout << "p>>2 is : " << z << endl; // 15 = 0000 1111

	return 0;
}

输出

Bitwise Operators

这是代码的屏幕截图:

Bitwise Operators

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  3. 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
  4. 声明一个无符号整数变量p,并为其赋值60,即二进制的0011 1100。
  5. 声明一个无符号整数变量q,并为其赋值13,即二进制的0000 1101。
  6. 声明一个整数变量z并将其初始化为0。
  7. 对变量p和q执行按位&(AND)运算,并将结果存储在变量z中。
  8. 在控制台上打印上述运算的结果以及其他文本。
  9. 对变量p和q执行按位|(OR)运算,并将结果存储在变量z中。
  10. 在控制台上打印上述运算的结果以及其他文本。
  11. 对变量p和q执行按位^(XOR)运算,并将结果存储在变量z中。
  12. 在控制台上打印上述运算的结果以及其他文本。
  13. 对变量p和q执行按位~(NOT)运算,并将结果存储在变量z中。
  14. 在控制台上打印上述运算的结果以及其他文本。
  15. 对变量p执行左移运算,并将结果存储在变量z中。
  16. 在控制台上打印上述运算的结果以及其他文本。
  17. 对变量p执行右移运算,并将结果存储在变量z中。
  18. 在控制台上打印上述运算的结果以及其他文本。
  19. 如果程序运行正常,main() 函数应返回一个值。
  20. main() 函数体结束。

赋值运算符

赋值运算符将值赋给变量。操作数/变量添加到运算符的左侧,而值添加到运算符的右侧。变量和值必须属于同一数据类型,否则C++编译器将报错。
例如

x = 5;

在上面的示例中,x是变量/操作数,=是赋值运算符,而5是值。以下是C++中流行的赋值运算符

运算符 描述
= (简单赋值运算符) 将右侧的值赋给左侧的变量。
+= (加法并赋值运算符) 将右操作数的值加到左操作数,然后将结果赋给左侧的变量。
-= (减法并赋值运算符) 将右操作数的值从左操作数中减去,然后将结果赋给左侧的变量。
*= (乘法并赋值运算符) 将左操作数的值与右操作数相乘,然后将结果赋给左侧的变量。
/= (除法并赋值运算符) 将左操作数的值除以右操作数,然后将结果赋给左侧的变量。

例如

#include <iostream> 
using namespace std;
int main()
{
	int x = 5;
	cout << "Initial value of x is " << x << "\n";

	x += 5;
	cout << "x += 5 gives :" << x << "\n";

	x -= 5;
	cout << "x -= 5 gives : " << x << "\n";

	x *= 5;
	cout << "x *= 5 gives :" << x << "\n";

	x /= 5;
	cout << "x /= 5 gives : " << x << "\n";

	return 0;
}

输出

Assignment Operators

这是代码的屏幕截图:

Assignment Operators

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  3. 调用 main() 函数,程序的逻辑应添加到其中。
  4. { 标记 main() 函数体的开始。
  5. 声明一个整数变量x并为其赋值5。
  6. 在控制台上打印变量x的值以及其他文本。\n是换行符。它在打印时将光标移到下一行。
  7. 将5加到变量x的值,并将结果赋给变量x。
  8. 在控制台上打印变量x的值以及其他文本。
  9. 将5从x的值中减去,并将结果赋给变量x。
  10. 在控制台上打印变量x的值以及其他文本。
  11. 将变量x的值乘以5,并将结果赋给变量x。
  12. 在控制台上打印变量x的值以及其他文本。
  13. 将变量x的值除以5,并将结果赋给变量x。
  14. 在控制台上打印变量x的值以及其他文本。
  15. 如果程序运行正常,main() 函数应返回一个值。
  16. main() 函数体结束。

其他运算符

其他运算符包括 sizeof 运算符、逗号运算符、条件运算符和运算符优先级。
让我们讨论C++支持的其他运算符

sizeof 运算符

此运算符确定变量的大小。使用sizeof运算符确定数据类型的大小。

例如

#include <iostream> 
using namespace std;
int main() {
	cout<<"Size of int : "<< sizeof(int) << "\n";

	cout<<"Size of char : " << sizeof(char) << "\n";

	cout<<"Size of float : " << sizeof(float) << "\n";

	cout<<"Size of double : " << sizeof(double) << "\n";

	return 0;
}

输出

sizeof operator

这是代码的屏幕截图:

sizeof operator

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  3. 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
  4. 使用sizeof运算符确定整数数据类型的大小,并在控制台上打印它以及其他文本。
  5. 使用sizeof运算符确定字符数据类型的大小,并在控制台上打印它以及其他文本。
  6. 使用sizeof运算符确定浮点数据类型的大小,并在控制台上打印它以及其他文本。
  7. 使用sizeof运算符确定浮点数据类型的大小,并在控制台上打印它以及其他文本。
  8. 如果程序运行正常,main() 函数应返回一个值。
  9. main() 函数体结束。

逗号运算符

逗号运算符(,)触发一系列操作的执行。它首先计算第一个操作数并丢弃结果。然后,它计算第二个操作数并返回其值和类型。

#include <iostream>
using namespace std;
int main() {
	int x, y;
	y = 100;
	x = (y++, y + 10, 99 + y);
	cout << x;
	return 0;
}

输出

Comma Operator

这是代码的屏幕截图:

Comma Operator

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  3. 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
  4. 声明两个整数变量x和y。
  5. 将变量y赋值为100。
  6. 将y的值递增并将结果赋给变量x。它以y为100开始,然后将其递增到101(y++)。接下来,y加上10。最后,y(仍为101)加上99,得到200。x现在是200。
  7. 在控制台上打印变量x的值。
  8. 如果程序运行正常,main() 函数应返回一个值。
  9. main() 函数体结束。

条件运算符

此运算符根据评估结果来评估条件并采取相应行动。

语法

Condition ? Expression2 : Expression3;

参数

  • Condition是要评估的条件。
  • Expression1 是在条件为真时要执行的表达式。
  • Expression3 是在条件为假时要执行的表达式。

例如

#include <iostream>
using namespace std;
int main() {
	int a = 1, b;
	b = (a < 10) ? 2 : 5;
	cout << "value of b: " << b << endl;
	return 0;
}

输出

Conditional Operator

这是代码的屏幕截图:

Conditional Operator

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  3. 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
  4. 声明两个整数变量a和b。变量a被赋值为1。
  5. 为变量b赋值。如果变量a小于10,则b被赋值为2;否则,b被赋值为5。
  6. 在控制台上打印变量b的值以及其他文本。
  7. 如果程序运行正常,main() 函数应返回一个值。
  8. main() 函数体结束。

运算符的优先级

一个操作可能包含多个运算符。在这种情况下,运算符优先级决定了哪个先被评估。

以下列表显示了C++中运算符的优先级,从左到右优先级递减

(), [],*, /, %, +/-, << , >>, == , !=, ^, |, &&, ||, ?:, =, +=, -=, *=, /=

摘要

  • 运算符是用于执行逻辑和算术运算的符号。
  • 算术运算符帮助我们对操作数执行各种算术运算。
  • 关系运算符帮助我们对操作数执行各种比较运算。
  • 逻辑运算符帮助我们对操作数执行各种逻辑运算。
  • 位运算符帮助我们对操作数执行位运算。
  • 赋值运算符帮助我们对操作数执行各种算术运算。
  • sizeof运算符返回变量或数据类型的大小。
  • 逗号运算符执行一系列操作。
  • 条件运算符根据结果评估条件并执行相应操作。