C++ Primer 笔记十五 算术运算符

本文详细介绍了C++中的算术运算符及其优先级,包括一元正号、一元负号、乘法、除法、求余、加法和减法等,并解释了这些运算符如何应用于不同数据类型,特别指出了一元运算符对指针的操作方式及布尔类型在运算中的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ Primier 笔记十五 算术运算符


下表是一个算术运算符的优先级分组:

算术运算符(左结合率)
运算符 功能 用法
  |
优 |
先 |
级 |
  |
  ▼
+
-
一元正号
一元负号
+ expr
- expr
*
/
%
乘法
除法
求余
expr * expr
expr / expr
expr % expr
+
-
加法
减法
expr + expr
expr - expr
  1. 算术运算符能作用于任意算术类型以及任意能转换为算术类型的类型;
  2. 算术运算符的运算对象和求值结果都是右值;
  3. 一元正号运算符、加法运算符和减法运算符都能作用于指针;
  4. 一元正号运算符作用于一个指针或者算术值时,返回运算对象的一个(提升后的)副本;一元负号运算符对运算对象值取负后,返回其(提升后的)副本;
  5. 布尔值不应该参与运算,因为对大多数运算符来说,布尔类型的运算对象将被提升为 int 类型:
bool b = true;
bool b2 = -b;	// b2 is true!

 
造成溢出和运算异常的原因:

  1. 数学性质本身,例如除数是 0;
  2. 计算机的特点,例如溢出。
/* limit.h 头文件规定的 short 类型的最大最小值 */
/* Minimum and maximum values a `signed short int' can hold.  */
// #  define SHRT_MIN	(-32768)
// #  define SHRT_MAX	32767

short short_value = 32767;
short_value += 1;

std::cout << “short_value :<< short_value 
        << std::endl;

// gcc 4.8.4 的运行结果为
// short_value : -32768

其他一些知识点:

  1. 整数相除的结果还是整数。C++11 新标准规定商一律向 0 取整(即直接切除小数部分);
  2. 取余运算的运算对象必须是整数类型;
  3. 对于整数 mnn 不等于0, 取余运算的结果符号与 m 相同,除了 -m 导致溢出的特殊情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值