本文主要介绍C++中常见的运算符,包括算术运算符、关系运算符、逻辑运算符和符合赋值等。
1、算术运算符//算术运算符 a+b //加法 a-b //减法 a*b //乘法 a/b //除法 a%b //取余
除法运算(/)中,小数点后的部分会完全舍弃,不会进行四舍五入,若要获得余数部分,可以使用(%)运算符。例如:
5/3 = 1 5%3 = 2
余数运算常见案例有:假设我们希望程序打印的数据每行不能超过8个字符,不满 8个字符用' '代替,否则换行。
const int lin_size = 8; int cnt = 1; //以下语句会执行多次,每次执行完,cnt会增加1 cout << a_string << (cnt % lin_size ? " " : "n");
这里有个特殊语句:(cnt % lin_size ? " " : "n")。就是条件运算符(conditional operator),语句表示:如果余数运算的结果为0,则条件运算符的输出为"n";如果余数运算符的结果非0,则条件运算符输出" "。条件运算符的一般形式为:
expr ? 如果expr为True,执行该语句 : 如果expr为False,执行该语句
注意:条件表达式的值为0,会被视为False;其他非零值则被视为True。上述例子中,如cnt不是8的整数倍,条件表达式不为0,则执行'?'后的部分。
2、复合赋值符合运算符是一种比较简单的表达方式。若在某个对象上进行运算时,然后将运算结果赋予给该对象,我们可以这样写:
cnt+=1 //等同于 cnt=cnt+1
补充:递增(++)与递减(- -)的用法。
(1) 若将运算符前置到某个对象上,原对象值会先进行递增(或递减),然后在使用该对象。
int cnt = 1; ++cnt; cout << cnt;//cnt值为2
(2) 若将运算符后置到某个对象上,原对象会先供给表达式使用,然后在行递增(或递减)。
int cnt = 1; cnt++; cout << cnt;//cnt值为13、关系运算符
关系运算符的结果为两种True和False。常见的关系运算符有如下六种:
a == b; //等于 a != b; //不等于 a < b; //小于 a > b; //大于 a <= b; //小于等于 a >= b; //大于等于
利用相等运算符==体验用户的回答:
bool usr_more=True; char usr_rsp; //询问用户是否愿意继续下一个问题 //将用户的回答读入usr_rsp对象中 if(usr_rsp=='N') usr_more=False;
if语句之后的表达式运算结果为True时,条件成立,执行后面的语句。但是如果usr_rsp等于小写'n'时,我们必须要对两者进行操作,解决方法之一就是:
if(usr_rsp=='N') usr_more=False; else if(usr_rsp=='n') usr_more=False;
注意:不要将赋值运算符(=)和相等关系运算符(==)相混淆。
4、逻辑运算符常见的逻辑运算符有OR(||)、AND(&)、NOT(!)利用逻辑运算符可以解决上述问题。上面的问题我们可以有另一种解法:
if(usr_rsp=='N' || usr_rsp=='n') usr_more=False;
注意:逻辑运算符的原则是:短路求值法。
运算符优先级同一表达式会有多个运算符,求值的顺序是按照运算符事先定义好的优先级来决定。常见的运算符优先级如下(由高到低):
逻辑运算符 NOT 算术运算符 (*,/,%) 算术运算符(+,-) 关系运算符(<,>,<=,>=) 关系运算符(==,!=) 逻辑运算符 AND 逻辑运算符 OR 赋值运算符
注意:如果要改变内置运算符的优先级,可以利用小括号。



