文档章节

【Essential C++ 学习笔记】第一章 基础编程 - 运算符篇

JokerHuang
 JokerHuang
发布于 2016/08/15 21:52
字数 1266
阅读 5
收藏 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,不过我觉得也没人会转...

© 著作权归作者所有

共有 人打赏支持
JokerHuang
粉丝 3
博文 6
码字总数 7272
作品 0
苏州
高级程序员
C语言基础教程之预定义和宏处理

define看起来很炫酷!C语言基础教程之预处理和宏定义 C语言预处理器 C语言预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C语言预处理器只不过是一个文本替换工具...

这个人很懒什么都没留下
昨天
0
0
c语言什么书适合零基础的人看?只能告诉你书多看点总是没有坏处

c语言什么书籍 适合零基础的到脱发 基础篇 《C语言入门很简单》 《C语言从入门到精通》 《C程序设计语言 第2版·新版》 进阶篇 《C语言趣味编程100例》 《C专家编程》 《C和指针》 《C陷阱和...

这个人很懒什么都没留下
07/10
0
0
C语言编程学习运算符的优先级和结合性

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/25
0
0
4-C++远征之起航篇-学习笔记

c++教程起航篇 我们会讲C++那些事,C++与C语言的关系。 C++诞生于贝尔实验室。 C++之父: 本贾尼·斯特劳斯特卢普 C++社区排行榜 最新排行,c++排名第三,Python排名第四 C++语言的应用领域:...

天涯明月笙
07/20
0
0
C/C++要学什么东西?C/C++学完能干什么?学了又能当饭吃吗?

前言 普遍问题 学校的课程设计不完善,涉及面广,什么都不深入。 老师缺乏实际的工作经验,比如说我经常看到老师经常教学生做数学题之类的小程序,但是,实际工作中,我们并不玩这个。 在我看...

这个人很懒什么都没留下
07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

流量劫持是如何产生的?

流量劫持,这种古老的攻击沉寂了一段时间后,最近又开始闹的沸沸扬扬。众多知名品牌的路由器相继爆出存在安全漏洞,引来国内媒体纷纷报道。只要用户没改默认密码,打开一个网页甚至帖子,路由...

谢思华
21分钟前
0
0
Hadoop Client无法使用maven下载源码

最近在学习hadoop,使用maven的时候想看一下源码的注释,结果IDEA一直提示无法下载 搞得我一度以为maven坏掉了。 但是通过搜索,发现在maven仓库里确实没有源码.... 而2.8.1以及之前的版本是...

Iceberg_XTY
22分钟前
0
0
为什么程序员千万不要重写代码?

你所做的事情,也许暂时看不到成果,但不要灰心或焦虑,你不是没有成长,而是在扎根。 图片来自网络 0 前言 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的...

Java小铺
24分钟前
0
0
VUE集成AdminLte

1. 安装需要到插件 npm i admin-lte -Snpm i jquery -Snpm i axios -Snpm i vue-router -S 2. 配置webpack.config.js 2.1 module.exports.module.rules修改字体loader: {test: /\.(p......

Pasenger
今天
0
0
Spring Aop原理之切点表达式解析

在前面的文章(Spring AOP切点表达式详解)中,我们总结了Spring Aop切点表达式的用法,而在上文(Spring Aop原理之Advisor过滤)中我们讲到,切点表达式的解析主要是在PatternParser.parse...

爱宝贝丶
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部