综述由AI生成C++ 中的各类运算符,包括算术、关系、逻辑、赋值、位运算及其他运算符。通过功能说明、表格对比和代码示例,讲解了运算符的用法、优先级及注意事项,如自增自减的区别和整数除法特性。旨在帮助读者掌握 C++ 基础语法操作。
性能调优25 浏览
C++ 运算符详解
运算符是一种告诉编译器执行特定数学或逻辑操作的符号。C++ 提供了丰富的运算符,主要包括:
算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
其他运算符(如条件运算符、逗号运算符等)
1. 算术运算符
功能
用于执行基本的数学运算。
运算符
描述
示例
+
加法
a + b
-
减法
a - b
*
乘法
a * b
/
除法
a / b
%
取模(取余)
a % b
++
自增
a++ 或 ++a
--
自减
a-- 或 --a
代码示例
#include<iostream>usingnamespace std;
intmain(){
cout << "=== 算术运算符示例 ===" << endl;
int a = 10, b = 3;
double x = 10.0, y = 3.0;
// 基本算术运算
cout << "a = " << a << ", b = " << b << endl;
cout << "a + b = " << (a + b) << endl; // 加法
cout << "a - b = " << (a - b) << endl; // 减法
cout << "a * b = " << (a * b) << endl; // 乘法
cout << "a / b = " << (a / b) << endl;
cout << << (x / y) << endl;
cout << << (a % b) << endl;
cout << endl << << endl;
c = ;
cout << << c << endl;
cout << << c++ << endl;
cout << << c << endl;
cout << << ++c << endl;
cout << << c << endl;
cout << << c-- << endl;
cout << << c << endl;
cout << << --c << endl;
cout << << c << endl;
;
}
// 整数除法(截断小数)
"x / y = "
// 浮点数除法
"a % b = "
// 取模(求余数)
"=== 自增自减运算符 ==="
// 自增自减运算
int
5
"初始值 c = "
"c++ = "
// 后置自增:先使用值,再自增
"现在 c = "
"++c = "
// 前置自增:先自增,再使用值
"现在 c = "
"c-- = "
// 后置自减:先使用值,再自减
"现在 c = "
"--c = "
// 前置自减:先自减,再使用值
"现在 c = "
return
0
运行结果
=== 算术运算符示例 ===
a = 10, b = 3
a + b = 13
a - b = 7
a * b = 30
a / b = 3
x / y = 3.33333
a % b = 1
=== 自增自减运算符 ===
初始值 c = 5
c++ = 5
现在 c = 6
++c = 7
现在 c = 7c-- = 7
现在 c = 6--c = 5
现在 c = 5
2. 关系运算符
功能
用于比较两个值,返回布尔值(true/false)。
运算符
描述
示例
==
等于
a == b
!=
不等于
a != b
>
大于
a > b
<
小于
a < b
>=
大于等于
a >= b
<=
小于等于
a <= b
代码示例
#include<iostream>usingnamespace std;
intmain(){
cout << "=== 关系运算符示例 ===" << endl;
int a = 10, b = 20, c = 10;
cout << "a = " << a << ", b = " << b << ", c = " << c << endl << endl;
// 等于和不等于
cout << "a == b: " << (a == b) << endl; // 等于比较
cout << "a == c: " << (a == c) << endl; // 等于比较
cout << "a != b: " << (a != b) << endl; // 不等于比较
cout << "a != c: " << (a != c) << endl; // 不等于比较
cout << endl;
// 大小比较
cout << "a > b: " << (a > b) << endl; // 大于比较
cout << "a < b: " << (a < b) << endl; // 小于比较
cout << "a >= c: " << (a >= c) << endl; // 大于等于比较
cout << "a <= c: " << (a <= c) << endl; // 小于等于比较
cout << "b >= a: " << (b >= a) << endl; // 大于等于比较
cout << endl << "=== 在条件语句中使用 ===" << endl;
// 在 if 语句中使用关系运算符if (a < b) {
cout << "a 小于 b" << endl;
}
if (a == c) {
cout << "a 等于 c" << endl;
}
if (b > a) {
cout << "b 大于 a" << endl;
}
return0;
}
运行结果
=== 关系运算符示例 ===
a = 10, b = 20, c = 10a == b: 0a == c: 1a != b: 1a != c: 0a > b: 0a < b: 1a >= c: 1a <= c: 1b >= a: 1
=== 在条件语句中使用 ===
a 小于 ba 等于 cb 大于 a
#include<iostream>usingnamespace std;
intmain(){
cout << "=== 赋值运算符示例 ===" << endl;
int a = 10;
cout << "初始值 a = " << a << endl;
// 简单赋值
a = 5;
cout << "a = 5 后:" << a << endl;
// 复合赋值运算符
a += 3; // a = a + 3
cout << "a += 3 后:" << a << endl;
a -= 2; // a = a - 2
cout << "a -= 2 后:" << a << endl;
a *= 4; // a = a * 4
cout << "a *= 4 后:" << a << endl;
a /= 2; // a = a / 2
cout << "a /= 2 后:" << a << endl;
a %= 3; // a = a % 3
cout << "a %= 3 后:" << a << endl;
cout << endl << "=== 多个变量赋值 ===" << endl;
// 多个变量赋值int x, y, z;
x = y = z = 100; // 从右向左赋值
cout << "x = " << x << ", y = " << y << ", z = " << z << endl;
// 在表达式中使用赋值int b = 5;
int c = (b = 10) + 5; // b 被赋值为 10,然后 c = 10 + 5
cout << "b = " << b << ", c = " << c << endl;
return0;
}
运行结果
=== 赋值运算符示例 ===
初始值 a = 10a = 5 后:5
a += 3 后:8
a -= 2 后:6
a *= 4 后:24
a /= 2 后:12
a %= 3 后:0
=== 多个变量赋值 ===
x = 100, y = 100, z = 100b = 10, c = 15
5. 位运算符
功能
对整数在二进制位级别进行操作。
运算符
描述
示例
&
按位与
a & b
|
按位或
a | b
^
按位异或
a ^ b
~
按位取反
~a
<<
左移
a << n
>>
右移
a >> n
代码示例
#include<iostream>#include<bitset>usingnamespace std;
intmain(){
cout << "=== 位运算符示例 ===" << endl;
unsignedint a = 5; // 二进制:0101unsignedint b = 3; // 二进制:0011unsignedint c;
cout << "a = " << a << " (二进制:" << bitset<4>(a) << ")" << endl;
cout << "b = " << b << " (二进制:" << bitset<4>(b) << ")" << endl << endl;
// 按位与 (&) - 两个位都为 1 时结果为 1
c = a & b;
cout << "a & b = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
// 按位或 (\|) - 至少一个位为 1 时结果为 1
c = a | b;
cout << "a | b = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
// 按位异或 (^) - 两个位不同时结果为 1
c = a ^ b;
cout << "a ^ b = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
// 按位取反 (~) - 所有位取反
c = ~a;
cout << "~a = " << c << " (二进制:" << bitset<32>(c) << ")" << endl;
cout << endl << "=== 移位运算符 ===" << endl;
// 左移 (<<) - 向左移动指定位数,右边补 0
c = a << 1; // 0101 << 1 = 1010
cout << "a << 1 = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
c = a << 2; // 0101 << 2 = 0100 (假设 4 位表示)
cout << "a << 2 = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
// 右移 (>>) - 向右移动指定位数,左边补 0
c = a >> 1; // 0101 >> 1 = 0010
cout << "a >> 1 = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
c = a >> 2; // 0101 >> 2 = 0001
cout << "a >> 2 = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
return0;
}
运行结果
=== 位运算符示例 ===
a = 5 (二进制:0101)
b = 3 (二进制:0011)
a & b = 1 (二进制:0001)
a | b = 7 (二进制:0111)
a ^ b = 6 (二进制:0110)
~a = 4294967290 (二进制:11111111111111111111111111111010)
=== 移位运算符 ===
a << 1 = 10 (二进制:1010)
a << 2 = 20 (二进制:0100)
a >> 1 = 2 (二进制:0010)
a >> 2 = 1 (二进制:0001)
6. 其他运算符
条件运算符(三元运算符)
语法:条件 ? 表达式 1 : 表达式 2
sizeof 运算符
返回类型或对象的大小(字节数)。
逗号运算符
按顺序执行多个表达式,返回最后一个表达式的值。
代码示例
#include<iostream>usingnamespace std;
intmain(){
cout << "=== 条件运算符(三元运算符)===" << endl;
int a = 10, b = 20;
// 条件运算符:如果条件为真返回第一个值,否则返回第二个值int max = (a > b) ? a : b;
cout << "a = " << a << ", b = " << b << endl;
cout << "较大值是:" << max << endl;
// 在输出中使用条件运算符
cout << "a " << ((a % 2 == 0) ? "是偶数" : "是奇数") << endl;
cout << "b " << ((b % 2 == 0) ? "是偶数" : "是奇数") << endl;
cout << endl << "=== sizeof 运算符 ===" << endl;
// sizeof 运算符
cout << "sizeof(int): " << sizeof(int) << " 字节" << endl;
cout << "sizeof(double): " << sizeof(double) << " 字节" << endl;
cout << "sizeof(char): " << sizeof(char) << " 字节" << endl;
cout << "sizeof(a): " << sizeof(a) << " 字节" << endl;
cout << endl << "=== 逗号运算符 ===" << endl;
// 逗号运算符int x, y, z;
z = (x = 5, y = 10, x + y); // 依次执行 x=5, y=10, 然后返回 x+y
cout << "x = " << x << ", y = " << y << ", z = " << z << endl;
// 在 for 循环中使用逗号运算符for (int i = 0, j = 10; i < j; i++, j--) {
cout << "i = " << i << ", j = " << j << endl;
}
return0;
}
运行结果
=== 条件运算符(三元运算符)===
a = 10, b = 20
较大值是:20
a 是偶数
b 是偶数
=== sizeof 运算符 ===
sizeof(int): 4 字节
sizeof(double): 8 字节
sizeof(char): 1 字节
sizeof(a): 4 字节
=== 逗号运算符 ===
x = 5, y = 10, z = 15i = 0, j = 10i = 1, j = 9i = 2, j = 8i = 3, j = 7i = 4, j = 6
7. 运算符优先级示例
#include<iostream>usingnamespace std;
intmain(){
cout << "=== 运算符优先级示例 ===" << endl;
int a = 5, b = 3, c = 2;
int result;
// 乘法优先级高于加法
result = a + b * c;
cout << "a + b * c = " << result << endl; // 5 + (3 * 2) = 11// 使用括号改变优先级
result = (a + b) * c;
cout << "(a + b) * c = " << result << endl; // (5 + 3) * 2 = 16// 关系运算符优先级高于逻辑运算符bool logicalResult = a > b && b < c;
cout << "a > b && b < c = " << logicalResult << endl; // (5 > 3) && (3 < 2) = true && false = false// 自增运算符优先级int x = 5;
int y = ++x * 2; // 先自增,再乘法
cout << "y = ++x * 2: x = " << x << ", y = " << y << endl;
x = 5;
y = x++ * 2; // 先乘法,再自增
cout << "y = x++ * 2: x = " << x << ", y = " << y << endl;
return0;
}
运行结果
=== 运算符优先级示例 ===
a + b * c = 11
(a + b) * c = 16
a > b && b < c = 0y = ++x * 2: x = 6, y = 12y = x++ * 2: x = 6, y = 10