文档章节

【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
苏州
高级程序员
私信 提问
【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7318264 作者:毛星云 邮箱: happylifemxy@qq.com 大家别叫我楼主可以吗- -.请叫我...

长平狐
2012/11/12
138
0
【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7318264 作者:毛星云 邮箱: happylifemxy@qq.com 大家别叫我楼主可以吗- -.请叫我...

长平狐
2012/11/12
97
0
C++零基础教程之类和对象初识

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

这个人很懒什么都没留下
09/03
0
0
【Visual C++】游戏开发笔记三十一 回归季:游戏开发资料整理打包下载&专栏行文思路整理

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/8147229 作者:毛星云 邮箱: happylifemxy@163.com 阔别近三个月,游戏开发笔记系列...

长平狐
2012/11/12
132
0
C语言基础教程之预定义和宏处理

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

这个人很懒什么都没留下
08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 自定义你的空间

通过对你的空间进行界面的自定义能够让你的空间更加出类拔萃。 如果你具有空间管理员权限,你可以修改你空间的颜色配色,添加你自己的空间标识,选择是否在你空间中显示边栏。或者你可以进入...

honeymose
54分钟前
1
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部