目录
1. 算术运算符
2. 关系运算符
3. 逻辑运算符
4. 位运算符
5. 赋值运算符
【C++短暂之旅|4. C++运算符】6. C++ 中的运算符优先级
1. 算术运算符 假设变量 A 的值为 10,变量 B 的值为 20
文章图片
#include
using namespace std;
int main()
{
int a = 21;
int b = 10;
int c;
c = a + b;
cout << "Line 1 - c 的值是 " << c << endl ;
c = a - b;
cout << "Line 2 - c 的值是 " << c << endl ;
c = a * b;
cout << "Line 3 - c 的值是 " << c << endl ;
c = a / b;
cout << "Line 4 - c 的值是 " << c << endl ;
c = a % b;
cout << "Line 5 - c 的值是 " << c << endl ;
int d = 10;
//测试自增、自减
c = d++;
cout << "Line 6 - c 的值是 " << c << endl ;
d = 10;
// 重新赋值
c = d--;
cout << "Line 7 - c 的值是 " << c << endl ;
return 0;
}
Line 1 - c 的值是 31 Line 2 - c 的值是 11 Line 3 - c 的值是 210 Line 4 - c 的值是 2 Line 5 - c 的值是 1 Line 6 - c 的值是 10 Line 7 - c 的值是 10
a++:先赋值再增加
++a:先增加再赋值
#include
using namespace std;
int main()
{
int a = 21;
int c ;
// a 的值在赋值之前不会自增
c = a++;
cout << "Line 1 - Value of a++ is :" << c << endl ;
// 表达式计算之后,a 的值增加 1
cout << "Line 2 - Value of a is :" << a << endl ;
// a 的值在赋值之前自增
c = ++a;
cout << "Line 3 - Value of ++a is:" << c << endl ;
return 0;
}
Line 1 - Value of a++ is :21 Line 2 - Value of a is :22 Line 3 - Value of ++a is:23
2. 关系运算符 假设变量 A 的值为 10,变量 B 的值为 20
文章图片
#include
using namespace std;
int main()
{
int a = 21;
int b = 10;
int c ;
if( a == b )
{
cout << "Line 1 - a 等于 b" << endl ;
}
else
{
cout << "Line 1 - a 不等于 b" << endl ;
}
if ( a < b )
{
cout << "Line 2 - a 小于 b" << endl ;
}
else
{
cout << "Line 2 - a 不小于 b" << endl ;
}
if ( a > b )
{
cout << "Line 3 - a 大于 b" << endl ;
}
else
{
cout << "Line 3 - a 不大于 b" << endl ;
}
/* 改变 a 和 b 的值 */
a = 5;
b = 20;
if ( a <= b )
{
cout << "Line 4 - a 小于或等于 b" << endl ;
}
if ( b >= a )
{
cout << "Line 5 - b 大于或等于 a" << endl ;
}
return 0;
}
Line 1 - a 不等于 b Line 2 - a 不小于 b Line 3 - a 大于 b Line 4 - a 小于或等于 b Line 5 - b 大于或等于 a
3. 逻辑运算符 假设变量 A 的值为 1,变量 B 的值为 0
文章图片
#include
using namespace std;
int main()
{
int a = 5;
int b = 20;
int c ;
if ( a && b )
{
cout << "Line 1 - 条件为真"<< endl ;
}
if ( a || b )
{
cout << "Line 2 - 条件为真"<< endl ;
}
/* 改变 a 和 b 的值 */
a = 0;
b = 10;
if ( a && b )
{
cout << "Line 3 - 条件为真"<< endl ;
}
else
{
cout << "Line 4 - 条件不为真"<< endl ;
}
if ( !(a && b) )
{
cout << "Line 5 - 条件为真"<< endl ;
}
return 0;
}
Line 1 - 条件为真 Line 2 - 条件为真 Line 4 - 条件不为真 Line 5 - 条件为真
4. 位运算符 位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下:
文章图片
假设如果 A = 60,且 B = 13
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A= 1100 0011
运算符 | 描述 | |
& | 按位与操作,按二进制位进行"与"运算。
|
|
| | 按位或运算符,按二进制位进行"或"运算。
|
|
^ | 异或运算符,按二进制位进行"异或"运算。
|
|
~ | 取反运算符,按二进制位进行"取反"运算。
|
|
<< | 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。 | |
>> | 二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。 |
#include
using namespace std;
int main()
{
unsigned int a = 60;
// 60 = 0011 1100
unsigned int b = 13;
// 13 = 0000 1101
int c = 0;
c = a & b;
// 12 = 0000 1100
cout << "Line 1 - c 的值是 " << c << endl ;
c = a | b;
// 61 = 0011 1101
cout << "Line 2 - c 的值是 " << c << endl ;
c = a ^ b;
// 49 = 0011 0001
cout << "Line 3 - c 的值是 " << c << endl ;
c = ~a;
// -61 = 1100 0011
cout << "Line 4 - c 的值是 " << c << endl ;
c = a << 2;
// 240 = 1111 0000
cout << "Line 5 - c 的值是 " << c << endl ;
c = a >> 2;
// 15 = 0000 1111
cout << "Line 6 - c 的值是 " << c << endl ;
return 0;
}
Line 1 - c 的值是 12 Line 2 - c 的值是 61 Line 3 - c 的值是 49 Line 4 - c 的值是 -61 Line 5 - c 的值是 240 Line 6 - c 的值是 15
5. 赋值运算符
文章图片
#include
using namespace std;
int main()
{
int a = 21;
int c ;
c =a;
cout << "Line 1 - =运算符实例,c 的值 = : " <>=2;
cout << "Line 8 - >>= 运算符实例,c 的值 = : " <
Line 1 - =运算符实例,c 的值 = 21 Line 2 - += 运算符实例,c 的值 = 42 Line 3 - -= 运算符实例,c 的值 = 21 Line 4 - *= 运算符实例,c 的值 = 441 Line 5 - /= 运算符实例,c 的值 = 21 Line 6 - %= 运算符实例,c 的值 = 11 Line 7 - <<= 运算符实例,c 的值 = 44 Line 8 - >>= 运算符实例,c 的值 = 11 Line 9 - &= 运算符实例,c 的值 = 2 Line 10 - ^= 运算符实例,c 的值 = 0 Line 11 - |= 运算符实例,c 的值 = 2
6. C++ 中的运算符优先级
文章图片
#include
using namespace std;
int main()
{
int a = 20;
int b = 10;
int c = 15;
int d = 5;
int e;
e = (a + b) * c / d;
// ( 30 * 15 ) / 5
cout << "(a + b) * c / d 的值是 " << e << endl ;
e = ((a + b) * c) / d;
// (30 * 15 ) / 5
cout << "((a + b) * c) / d 的值是 " << e << endl ;
e = (a + b) * (c / d);
// (30) * (15/5)
cout << "(a + b) * (c / d) 的值是 " << e << endl ;
e = a + (b * c) / d;
//20 + (150/5)
cout << "a + (b * c) / d 的值是 " << e << endl ;
return 0;
}
(a + b) * c / d 的值是 90 ((a + b) * c) / d 的值是 90 (a + b) * (c / d) 的值是 90 a + (b * c) / d 的值是 50