表达式(三):运算符

<基于 C++ Primer P124>
1.算数运算符:+(正)、-(负)、*、/、%、+、-
(1)布尔值不应该参与运算。

bool b = true;
bool b2 = -b; // b2 为真

(2)m = (m / n) * n + m % n
①(-m) / n 和 m / (-n) 都等于 -(m / n);
②m % (-n) 等于 m % n,(-m) % n 等于 m % n;

21 % 6 = 3; 21 / 6 = 3;
21 % 7 = 0; 21 / 7 = 3;
-21 % -8 = -5; -21 / -8 = 2;
21 % -5 = 1; 21 / -5 = -4;

(3)算数表达式可能产生未定义的结果,一部分原因是数学性质本身,如:除数是 0 的情况;另外一部分原因是计算机本身的特点,如:溢出(计算的结果超出该类型所能表示的范围)。
2.逻辑和关系运算符:!、<、<=、>、>=、==、!=、&&、||
(1)逻辑与运算和逻辑或运算具有短路求值性质。
(2)

if (i < j < k) // 使用 i < j 的布尔值结果和 k 比较,若 k 大于 1 则为真

(3)进行比较运算时除非比较的对象是布尔类型,否则不要使用布尔字面值 true 和 false 作为运算对象。
3.赋值运算符:=
(1)赋值运算符的优先级低于关系运算符的优先级,所以在条件语句 中,赋值部分通常应该加上括号。
(2)切勿混淆相等运算符和赋值运算符。

if (i == 42) // 判断 i 的值是否为 42
if (i = 42)  // 将 42 赋给 i,判断 i 的值是否为真

(3)复合赋值运算符:+=、-=、*=、/=、%=;可以减少求值次数。
4.递增和递减运算符

int i = 0, j;
j = ++i; // j = 1, i = 1:前置版本得到递增之后的值
j = i--; // j = 1, i = 2:后置版本得到递增之前的值

(1)优先使用递增递减的前置版本,不仅可以避免不必要的工作,提升性能,写出的代码也更符合编程的初衷。
(2)简洁可以成为一种美德,美观清晰的同时也降低了出错的可能性。

auto.pbeg = v.begin()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值