【Essential C++ 学习笔记】第一章 基础编程 - 运算符篇
【Essential C++ 学习笔记】第一章 基础编程 - 运算符篇
JokerHuang 发表于1年前
【Essential C++ 学习笔记】第一章 基础编程 - 运算符篇
  • 发表于 1年前
  • 阅读 3
  • 收藏 0
  • 点赞 0
  • 评论 0

华为云·免费上云实践>>>   

摘要: 在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。

本章导航

初识 C++

运算符

控制语句

数组和向量

初识指针

文件的读写


运算符

基础运算符

因为 C++ 是强类型的编程语言, 所以在基础运算符中唯一需要注意的是除法运算模运算外, 其他并无出奇之处.

运算符含义/作用
+加法运算符
-减法运算符
*乘法运算符
/除法运算符
%模运算符

除法运算符和模运算符的差别

两个整数相除, 结果将还是整数, 小数部分将被舍弃. 如果需要得到小数部分, 需要至少保证除数, 被除数有一个是浮点数.

整数 = 整数 / 整数;

浮点数 = 整数 / 浮点数;

浮点数 = 浮点数 / 浮点数;

而倘若想要获得整数除法运算当中未被除尽的余数部分, 则需要使用模运算符.

int a = 8, b = 3, c;
c = a % b; // 此时 c = 2

复合运算符和递增、递减运算符

复合运算符比较好理解, 在基础运算符的基础上连上一个赋值运算符形成复合运算符方便使用.

而递增、递减运算符则是在原有值的基础上 +1、-1 来计算新值, 值得注意的是递增、递减运算符分为前置后置两种, 其在表达式中的含义也不同, 后面将用例子来演示其不同处.

运算符含义/作用
+=加等于
-=减等于
*=乘等于
/=除等于
%=模等于
++递增运算符
--递减运算符

递增、递减运算符分为前置、后置两种情况, 代表了先递增(或先递减)再使用, 用例子来说就是:

int a, result;
const int c = 10;

a = 5;
result = a++; // result = 5; a = 6;

a = 5;
result = a--; // result = 5; a = 4;

a = 5;
result = c + (++a); // result = 16; a = 6;

a = 5;
result = c + (a++); // result = 15; a = 6;

a = 5;	
result = c + (--a); // result = 14; a = 4;

a = 5;
result = c + (a--); // result = 15; a = 4;

关系运算符

关系运算符用作比较两个值的关系, 核定结果只有可能是 true 或者 false.

并没有什么特殊的, 唯一需要注意的是 赋值运算符相等运算符的区分, 比较容易混淆

运算符含义/作用
>大于
>=大于等于
<小于
<=小于等于
==相等
!=不相等

逻辑运算符

逻辑运算符把语句连接成更复杂的复杂语句。也没什么特殊的,关键在于后一部分讲解的优先级。

运算符含义/作用
IIOR 逻辑运算符(应该是两根竖线,markdown 语法不允许,用英文字母 I 代替了)
&&AND 逻辑运算符
!NOT 逻辑运算符

运算符优先级

当同时存在多个运算符的时候,如何正确的表达出我们想要的表达式意思,则需要通过运算符的优先级来确认。

如果想要改变优先级的顺序,可以使用小括号来改变。

下表表示了一套运算符的优先级顺序,位置在上者表示优先级越高,同行表示同样级别的优先级,计算顺序从左向右。

运算符含义/作用
逻辑运算符!
算术运算符*、/、%
算术运算符+、-
逻辑运算符>、>=、<、<=、
逻辑运算符==、!=
逻辑运算符&
逻辑运算符II
赋值运算符=

运算符优先级实例

举个例子,倘若我们想判断 ival 是否是偶数,我们可以这么写:

! ival % 2;

假如 ival 是偶数,则条件为 true,否则条件判断为 false。看语义没问题,但是结果却不尽如人意,除非 ival 为 0,否则这个表达式要一直是 false。

为什么呢?原因在于 NOT 运算符的优先级高于 % 运算符,先计算 ival 的 NOT 运算,再计算 % 运算。

我们知道在 C++ 中 false 在算术表达式中被视为 0,true 在算术表达式中被视为 1,所以,除非 ival 为 0,否则表达式将一直有被语义。


心得体会

第一次这样写学习笔记,有点不太适应,内容也有点乱糟糟,希望通过学习 Essential C++ 这本书,一来让我对 C++ 有个更好的入门体验,二来也提高下自己的文笔。各位大神如果发现有不对的地方请指正,大家一起学习。如果要转请注明出处来自JokerHuang,不过我觉得也没人会转...

共有 人打赏支持
粉丝 4
博文 6
码字总数 7272
×
JokerHuang
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: