`
pengc825
  • 浏览: 8580 次
文章分类
社区版块
存档分类
最新评论

C++ 运算符笔记

 
阅读更多

C++ 运算符笔记

C++运算符又称操作符,它是对数据进行运算的符号,参与运算的数据称为操作数运算对象,由操作数和操作符连接而成的有效的式子称为表达式

按照运算符要求操作数个数的多少,可把C++运算符分为单目(或一元)运算符双目(或二元)运算符三目(或三元)运算符三类。单目运算符一般位于操作数的前面,如对x取负为-x;双目运算符一般位于两个操作数之间,如两个数a和b相加表示为a+b;三目运算符只有一个,即为条件运算符,它含有两个字符,分别把三个操作数分开。

一个运算符可能是一个字符,也可能由两个或三个字符所组成,还有的是一些C++保留字。如赋值号(=)就是一个字符,不等于号(!=)就是两个字符,左移赋值号(<<=)就是三个字符,测类型长度运算符(sizeof)就是一个保留字。

每一种运算符都具有一定的优先级,用来决定它在表达式中的运算次序。一个表达式中通常包含有多个运算符,对它们进行运算的次序通常与每一个运算符从左到右出现的次序相一致,但若它的下一个(即右边一个)运算符的优先级较高,则下一个运算符应先被计算。如当计算表达式a+b*(c-d)/e时,则每个运算符的运算次序依次为:-, * ,/,+。

对于同一优先级的运算符,当在同一个表达式的计算过程中相邻出现时,可能是按照从左到右的次序进行,也可能是按照从右到左的次序进行,这要看运算符的结合性。如加和减运算为同一优先级,它们的结合性是从左到右,当计算a+b-c+d时,先做最左边的加法,再做中间的减法,最后做右边的加法;又如各种赋值操作是属于同一优先级,但结合性是从右到左,当计算a=b=c时,先做右边的赋值,使c的值赋给b,再做左边的赋值,使b的值赋给a。


优先级 操作符 描述 例子 结合性
1 ()
[]
->
.
::
++
--
调节优先级的括号操作符
数组下标访问操作符
通过指向对象的指针访问成员的操作符
通过对象本身访问成员的操作符

作用域操作符
后置自增操作符
后置自减操作符
(a + b) / 4;
array[4] = 2;
ptr->age = 34;
obj.age = 34;
Class::age = 2;
for( i = 0; i < 10; i++ ) ...
for( i = 10; i > 0; i-- ) ...
从左到右
2 !
~
++
--
-
+
*
&
(type)
sizeof
逻辑取反操作符
按位取反(按位取补)
前置自增操作符
前置自减操作符
一元取负操作符
一元取正操作符
解引用操作符
取地址操作符
类型转换操作符
返回对象占用的字节数操作符
if( !done ) ...
flags = ~flags;
for( i = 0; i < 10; ++i ) ...
for( i = 10; i > 0; --i ) ...
int i = -1;
int i = +1;
data = *ptr;
address = &obj;
int i = (int) floatNum;
int size = sizeof(floatNum);
从右到左
3 ->*
.*
在指针上通过指向成员的指针访问成员的操作符
在对象上通过指向成员的指针访问成员的操作符
ptr->*var = 24;
obj.*var = 24;
从左到右
4 *
/
%
乘法操作符
除法操作符
取余数操作符
int i = 2 * 4;
float f = 10 / 3;
int rem = 4 % 3;
从左到右
5 +
-
加法操作符
减法操作符
int i = 2 + 3;
int i = 5 - 1;
从左到右
6 <<
>>
按位左移操作符
按位右移操作符
int flags = 33 << 1;
int flags = 33 >> 1;
从左到右
7 <
<=
>
>=
小于比较操作符
小于或等于比较操作符
大于比较操作符
大于或等于比较操作符
if( i < 42 ) ...
if( i <= 42 ) ...
if( i > 42 ) ...
if( i >= 42 ) ...
从左到右
8 ==
!=
等于比较操作符
不等于比较操作符
if( i == 42 ) ...
if( i != 42 ) ...
从左到右
9 & 按位与操作符 flags = flags & 42; 从左到右
10 ^ 按位异或操作符 flags = flags ^ 42; 从左到右
11 | 按位或操作符 flags = flags | 42; 从左到右
12 && 逻辑与操作符 if( conditionA && conditionB ) ... 从左到右
13 || 逻辑或操作符 if( conditionA || conditionB ) ... 从左到右
14 ? : 三元条件操作符 int i = (a > b) ? a : b; 从右到左
15 =
+=
-=
*=
/=
%=
&=
^=
|=
<<=
>>=
赋值操作符
复合赋值操作符(加法)
复合赋值操作符(减法)
复合赋值操作符(乘法)
复合赋值操作符(除法)
复合赋值操作符(取余)
复合赋值操作符(按位与)
复合赋值操作符(按位异或)
复合赋值操作符(按位或)
复合赋值操作符(按位左移)
复合赋值操作符(按位右移)
int a = b;
a += 3;
b -= 4;
a *= 5;
a /= 2;
a %= 3;
flags &= new_flags;
flags ^= new_flags;
flags |= new_flags;
flags <<= 2;
flags >>= 2;
从右到左
16 , 逗号操作符 for( i = 0, j = 0; i < 10; i++, j++ ) ... 从左到右


版权声明:本文为博主原创文章,未经博主允许不得转载。By PengCoX ( Pengc825@foxmail.com )

分享到:
评论

相关推荐

    P121~126C++类和对象C++运算符重载学习笔记.docx

    P121~126C++类和对象C++运算符重载学习笔记.docx

    C++整理笔记word版——01 C++学习笔记

    C++基础的学习笔记(其中的代码源件可私信留言) C++中的空头程序 使用C++书写hello world 学习变量 学习常量 标识符命名规则 数据类型 运算符 程序流程结构 数组 函数 指针 结构体

    C++学习笔记- 面向对象 .md

    C++学习笔记,博主个人向。内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联...

    c++基础笔记:预处理命令、命名空间、转义字符、输入输出、数据类型、算数运算符、类型转换等

    本篇文章是博主在学习c++基础时所做第一篇笔记,适用于有一定c++学习基础的同学,有些地方是按照自己的学习习惯所作,...c++基础笔记:预处理命令、命名空间、转义字符、输入输出、数据类型、算数运算符、类型转换等。

    C++学习笔记以及个人理解

    C++ 基础语法 1.1 变量 1.2 数值极限 1.3 零初始化 1.4 枚举类型 1.5 if 初始化器 1.6 switch 初始化器 1.7 三向比较运算符 1.8 属性 1.9 std::pair 1.10 std::optional 1.11 基于范围的 for 循环 基于范围的 for ...

    C++学习随手笔记--基础方面

    这个C++笔记还是04年上学的时侯记的,当时还只手记到笔记本上的,原先以为以候再也用不到了,没想到过了这么多年,要做QT开发了,顺便温习一下当初学的吧,所以就把原先的笔记整理成了电子版的,希望对学习C++的能有...

    C++读书笔记自学的总结

    C++常见表达式与作用域,表达式往往由运算符和操作数构成。&lt;&lt; 就是一种运算符,“hello world”是操作数,不同的操作数具有不同的操作类型。

    难得干货好课程!最新完结版C++全栈开发视频教程 最新版本C++从零基础到精通课程

    课程章节目录 01_第1章_c++概述 02_第2章_c++初始 03_第3章_c++对c的扩展 04_第4章_类和对象 ...├─3.00 作用域运算符.mp4 ├─3.01 命名空间的定义.mp4 ├─3.02 命名空间的特点详解.mp4 ├─3.03 无名命名

    运算符操作原理总结 C C++ C# java

    运算符操作原理总结,有例子解析。学JAVA时候,做的笔记,虽说不是很工整,一般还是能看懂的。

    《C++ primer plus》读书笔记(一)

    老式C头文件保留了扩展名.h,而C++头文件没有扩展名。 (有些C头文件被转换为C++头文件,去掉扩展名,并在前面加c,如cmath) 2、名称空间——相当于Java中的package,using编译指令相当于Java中的import。头文件...

    C++基础知识markdown文件,适用初学者备忘复习

    内容概要:C++转义字符、字符串类型、数据的输入输出、运算符、选择结构、循环结构、跳转语句、数组(包含一维数组,二维数组)、函数的总结。都是基础知识,俗话说“基础不牢,地动山摇”,学好基础知识能为后续的...

    C语言程序设计(第四版)笔记

    ②运算符丰富,公有34种运算符。 ③数据结构丰富,数据类型有:整型、实型、字符型、数组、指针、结构体、共用体等。 ④具有结构化的控制语句(如if…else、while、do…while、switch、for) ⑤语法限制不太...

    C++基础入门.pdf

    C++编程语言的基础入门学习笔记,涉及C++语言的数据类型 、运算符、程序运行流程、数组、函数、指针和结构体的相关知识点。适合零基础学习。

    位操作运算符进行刷题,一篇笔记拿下位运算操作

    /* 1s代表的是一堆的二进制1 1.首先是异或操作: 用的很多 ^ 同为0 异为1 x^1s=~x x和一堆的二进制1进行异或得到的结果就是~x 因为0^1=1 1^1=0 (解释:二进制和1异或操作相当于取~) x^(~x)=1s(1s代表的还是一堆的二...

    《算法笔记》codeup6.7和7.1题目A简单计算器题目编号1918全部测试样例和输出样例

    codeup《算法笔记》6.7小节——C++标准模板库(STL)介绍-&gt;stack的常见用法详解题目A:简单计算器题目编号:1918、《算法笔记》7.1小节——数据结构专题(1)-&gt;栈的应用题目A:简单计算器题目编号:1918: 题目描述: ...

    google C++ 风格指南 - 中文版

    3.9. 运算符重载 3.10. 存取控制 3.11. 声明顺序 3.12. 编写简短函数 译者 (YuleFox) 笔记 4. 来自 Google 的奇技 4.1. 智能指针 4.2. cpplint 5. 其他 C++ 特性 5.1. 引用参数 5.2. 函数重载 5.3. 缺省...

    C++编程

    课程名称&gt; 本课程针对C++程序设计和编程思想中核心的方法和技术进行了详细的讲解,帮助已经掌握了C语言但进一步希望学习面C++向对象编程方法和思想的同学快速...7,C++中的运算符重载 8,C++模板 9,C++中的输入输出流

    史上最强的C语言资料

    4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. C编程拾粹 42 10. C语言中实现数组的动态...

    C++零基础(数据类型)

    One 数据类型`运算符和控制结构 基本数据类型 1 布尔型 (以bool表示) 取值只能是fasle(假)或true(真) 2 字符型(以char表示) 通常用来存放的ASCII码, 3 整型(以int表示) 用short来修饰表示短整型 4 实型...

Global site tag (gtag.js) - Google Analytics