文档章节

【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语言预处理器只不过是一个文本替换工具...

这个人很懒什么都没留下
08/18
0
0
C++零基础教程之类和对象初识

C++ 类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理...

这个人很懒什么都没留下
09/03
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

没有更多内容

加载失败,请刷新页面

加载更多

vue组件传值之(父子)

⚠️组件的作用域是孤立的,vue解决组件传值问题是通过props ⚠️子传父的时候需要vm.$emit触发实例上的事件,页面需要定一个方法去取值 ⚠️一定要注意命名方式和书写,例如mylChart和myl-c...

peakedness丶
29分钟前
1
0
SpringBoot开发案例之整合Dubbo分布式服务

前言 在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了。在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使用的 ...

微笑向暖wx
43分钟前
1
0
TypeScript基础入门之装饰器(二)

转发 TypeScript基础入门之装饰器(二) 装饰器求值 如何应用装饰器应用于类内的各种声明的顺序: 1. 对每个实例成员应用参数装饰器,后跟Method,Accessor或Property Decorators。 2. 对每个静...

durban
43分钟前
1
0
Java程序员年薪40W是什么水平?税前还是税后?

很多人学Java都是冲着Java的高薪来的,那么搞Java的程序员,年薪40W到底是个什么水平呢,本文达妹和大家一起探讨一下。 前几天在论坛看到这么一个问题,搞Java的程序员年薪40w是什么水平?一...

架构师springboot
49分钟前
2
0
区块链100讲:盘点那些常用的加密算法原理

在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。 1 对称加密 原理:加密和解密数据使用同一个密钥,适合对大量数据进行加解密 安全性:关键是密钥的保存方式...

HiBlock
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部