C++ 中的运算符及示例:定义、类型和程序
什么是运算符?
运算符是用于对操作数执行运算的符号。运算符操作操作数。运算可以是算术运算或逻辑运算。C++中有不同类型的运算符用于执行不同的运算。
考虑以下操作
a = x + y;
在上面的语句中,x和y是操作数,而+是加法运算符。当C++编译器遇到上述语句时,它将把x和y相加,并将结果存储在变量a中。
C++中的运算符类型
C++中主要有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; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
- 声明一个整数变量a并将其初始化为11。
- 声明一个整数变量b并将其初始化为5。
- 声明一个整数变量c。
- 在控制台上打印a+b运算值以及其他文本。
- 在控制台上打印a-b运算值以及其他文本。
- 在控制台上打印a*b运算值以及其他文本。
- 在控制台上打印a/b运算值以及其他文本。
- 在控制台上打印a%b运算值以及其他文本。
- 在控制台上打印a++运算值以及其他文本。
- 在控制台上打印a--运算值以及其他文本。
- 如果程序运行正常,main() 函数应返回一个值。
- 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; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
- 声明一个整数变量a并将其初始化为11。
- 声明一个整数变量b并将其初始化为5。
- 在控制台上打印一些文本,说明变量a和b的值。
- 在if决策语句中执行算术运算a==b,以了解其为真还是为假。{ 标志着if语句体块的开始。
- 如果上述if语句为真,则在控制台上打印的文本。这不会被执行。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着if语句体块的结束。
- 上述if语句的else部分。它说明了如果a==b运算为假时该做什么。
- 如果上述if语句为假,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着else语句体块的结束。
- 在if决策语句中执行算术运算a
- 如果上述if语句为真,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着if语句体块的结束。
- 上述if语句的else部分。它说明了如果a
- 如果上述if语句为假,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着else语句体块的结束。
- 在if决策语句中执行算术运算a>b,以了解其为真还是为假。{ 标志着if语句体块的开始。
- 如果上述if语句为真,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着if语句体块的结束。
- 上述if语句的else部分。它说明了如果a>b运算为假时该做什么。
- 如果上述if语句为假,则在控制台上打印的文本。endl是C++中的换行关键字。它会将光标移到下一行开始打印。}标志着else语句体块的结束。
- 如果程序运行正常,main() 函数应返回一个值。
- 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; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。
- { 标记 main() 函数体的开始。
- 声明四个整数变量a、b、c和d,并为它们赋值。
- 在if语句中使用&&(AND)运算符。它连接了两个条件:a等于b,并且a大于b。第一个条件为假,第二个条件为真。False&&true为False,因此,if的结果为false。
- 如果上述if语句为真,则在控制台上打印的文本。这不会被执行。
- 如果上述if语句为假,则执行的部分。
- 如果if语句为假,则在控制台上打印的文本。这将执行。
- 在if语句中使用||(OR)运算符。它连接了两个条件:a等于b,并且a大于b。第一个条件为假,第二个条件为真。False||true为True,因此,if的结果为true。
- 如果上述if语句为真,则在控制台上打印的文本。这将执行。
- 如果上述if语句为假,则执行的部分。
- 如果if语句为假,则在控制台打印的文本。这不会被执行。
- 检查变量的值是否为0。
- 如果上述if语句为真,则在控制台上打印的文本。这不会被执行。
- 如果上述if语句为假,则执行的部分。
- 如果if语句为假,则在控制台上打印的文本。这将执行。
- 如果程序运行正常,main() 函数应返回一个值。
- 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; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
- 声明一个无符号整数变量p,并为其赋值60,即二进制的0011 1100。
- 声明一个无符号整数变量q,并为其赋值13,即二进制的0000 1101。
- 声明一个整数变量z并将其初始化为0。
- 对变量p和q执行按位&(AND)运算,并将结果存储在变量z中。
- 在控制台上打印上述运算的结果以及其他文本。
- 对变量p和q执行按位|(OR)运算,并将结果存储在变量z中。
- 在控制台上打印上述运算的结果以及其他文本。
- 对变量p和q执行按位^(XOR)运算,并将结果存储在变量z中。
- 在控制台上打印上述运算的结果以及其他文本。
- 对变量p和q执行按位~(NOT)运算,并将结果存储在变量z中。
- 在控制台上打印上述运算的结果以及其他文本。
- 对变量p执行左移运算,并将结果存储在变量z中。
- 在控制台上打印上述运算的结果以及其他文本。
- 对变量p执行右移运算,并将结果存储在变量z中。
- 在控制台上打印上述运算的结果以及其他文本。
- 如果程序运行正常,main() 函数应返回一个值。
- 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; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。
- { 标记 main() 函数体的开始。
- 声明一个整数变量x并为其赋值5。
- 在控制台上打印变量x的值以及其他文本。\n是换行符。它在打印时将光标移到下一行。
- 将5加到变量x的值,并将结果赋给变量x。
- 在控制台上打印变量x的值以及其他文本。
- 将5从x的值中减去,并将结果赋给变量x。
- 在控制台上打印变量x的值以及其他文本。
- 将变量x的值乘以5,并将结果赋给变量x。
- 在控制台上打印变量x的值以及其他文本。
- 将变量x的值除以5,并将结果赋给变量x。
- 在控制台上打印变量x的值以及其他文本。
- 如果程序运行正常,main() 函数应返回一个值。
- 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; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
- 使用sizeof运算符确定整数数据类型的大小,并在控制台上打印它以及其他文本。
- 使用sizeof运算符确定字符数据类型的大小,并在控制台上打印它以及其他文本。
- 使用sizeof运算符确定浮点数据类型的大小,并在控制台上打印它以及其他文本。
- 使用sizeof运算符确定浮点数据类型的大小,并在控制台上打印它以及其他文本。
- 如果程序运行正常,main() 函数应返回一个值。
- main() 函数体结束。
逗号运算符
逗号运算符(,)触发一系列操作的执行。它首先计算第一个操作数并丢弃结果。然后,它计算第二个操作数并返回其值和类型。
#include <iostream> using namespace std; int main() { int x, y; y = 100; x = (y++, y + 10, 99 + y); cout << x; return 0; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
- 声明两个整数变量x和y。
- 将变量y赋值为100。
- 将y的值递增并将结果赋给变量x。它以y为100开始,然后将其递增到101(y++)。接下来,y加上10。最后,y(仍为101)加上99,得到200。x现在是200。
- 在控制台上打印变量x的值。
- 如果程序运行正常,main() 函数应返回一个值。
- 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; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
- 声明两个整数变量a和b。变量a被赋值为1。
- 为变量b赋值。如果变量a小于10,则b被赋值为2;否则,b被赋值为5。
- 在控制台上打印变量b的值以及其他文本。
- 如果程序运行正常,main() 函数应返回一个值。
- main() 函数体结束。
运算符的优先级
一个操作可能包含多个运算符。在这种情况下,运算符优先级决定了哪个先被评估。
以下列表显示了C++中运算符的优先级,从左到右优先级递减
(), [],*, /, %, +/-, << , >>, == , !=, ^, |, &&, ||, ?:, =, +=, -=, *=, /=
摘要
- 运算符是用于执行逻辑和算术运算的符号。
- 算术运算符帮助我们对操作数执行各种算术运算。
- 关系运算符帮助我们对操作数执行各种比较运算。
- 逻辑运算符帮助我们对操作数执行各种逻辑运算。
- 位运算符帮助我们对操作数执行位运算。
- 赋值运算符帮助我们对操作数执行各种算术运算。
- sizeof运算符返回变量或数据类型的大小。
- 逗号运算符执行一系列操作。
- 条件运算符根据结果评估条件并执行相应操作。