用来执行特定的数字或逻辑操作,C++主要提供的运算符如下:
- 算数运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 杂项运算符
算数运算符:
主要运算符:+(加)、-(减) 、*(乘) 、/(除) 、%(除余) 、++(自加) 、--(自减)
/和%运算符详解:
- 若两个操作数是正数,则除法的结果是正数。
- 求模的结果也是正数若两个操作数是负数,则除法的结果是正数。
- 求模的结果是负数若只有一个操作数是负数,则除法和求模的结果取决于机器。
- 除法可以确定结果是负数逻辑与和逻辑或操作符总是先计算其左操作数,然后再计算其右操作数。
- 只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解其右操作数区分 如:if(i<j<k) 和 if(i<j && j<k),第一个i<j或者为0或者为1,只要k大于1,表达式就为true;第二个必须i<j且j<k表达式才为true区分。if(val) 和 if(val == true),第一个只要val非零则表达式为true,val为0则表达式为false;第二个只有val为1表达式为true,val非1则表达式为false。
int val = 2;
if(val==true){ //if内的语句不会被执行。
cout<<"val==true"<<endl;
}
--运算符详解:
-- 、++运算符可以在一次计算中进行叠加,如:----a就是在运行这个表达式时对a连续自减两次,再继续向下运行。
实例:
#include <iostream>
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
关系运算符
主要运算符:== 、!= 、> 、< 、>= 、<=(后面两个注意顺序不要写反了)
实例:
#include <iostream>
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
逻辑运算符(不是0,就是真,反之则为假)
主要运算符:&& 、|| 、!
&&运算符详解:
先判断左值是否为假,若为假则直接得到整个表达式的值为假,&&运算符右侧的表达式将不再被执行。反之,则继续执行表达式,计算最终结果。
可以使用该特性将右侧的表达式视为一个if语句的条件,判断右侧表达式是否为真。
||运算符详解:
先判断左值是否为真,若为真则直接得到整个表达式的值为假,||运算符右侧的表达式将不再被执行。反之,则继续执行表达式,计算最终结果。
实例:
#include <iostream>
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 - 条件为真
位运算符(无论多少进制先转化为二进制再计算!!)
主要运算符:& 、! 、| 、>>(右移) 、<<(左移) 、^ (异或) 、~ (取反)
>>与<<运算符详解:
- <<和>>可以将头部的数字舍掉,并且将由于移动而产生的空位补上0。
- 是否舍去头部的数字与变量的二进制位数有关。
- 二进制位数