《C++》基础入门_01——数据存储,表示形式,基本运算
以下内容为大学期间学习C++语言总结的知识:
《C++》基础入门_01——数据存储,表示形式,基本运算
《C++》基础入门_02——面向对象的总体概括
《C++》基础入门_03——程序的开发过程
《C++》基础入门_04——四大语句
《C++》基础入门_05——函数详解篇
《C++》基础入门_06——面向对象的详述
《C++》基础入门_07——数据的共享保护:const
《C++》基础入门_08——利用数组实现对批量数据的处理
《C++》基础入门_09——指针和引用的讲解
《C++》基础入门_10——用户自定义数据类型详细篇
《C++》基础入门_11——友元的讲解
《C++》基础入门_12——类模板
《C++》基础入门_13——运算符的重载
《C++》基础入门_14——继承与派生
《C++》基础入门_15——多态性
《C++》基础入门_16——输入输出流详讲
《C++》基础入门_17——对象串行化
《C++》基础入门_18——异常处理
《C++》基础入门_19——命名空间
《C++》基础入门_20——文件操作
《C++》基础入门_21——在函数中返回数组的常用方法
c++是从c语言发展而来,为了与C兼容,C++保留了一些C的特性。
一、信息的分类
二、信息的存储单位
1. 位(bit,b)
度量数据的最小单位,表示一位二进制信息。
2. 字节(byte B)
由八位二进制数字组成(1 byte = 8 bit)。
- 千字节 1 KB = 1024 B
- 兆字节 1 MB = 1024 K
- 吉字节 1 GB = 1024 M
三、二进制的编码表式
1. 原码
X=+0101011 [X]原= 0 0101011
X=-0101011 [X]原= 1 0101011
符号位0正1负
- 缺点:
- 零的表示不惟一:
[+0]原 =000...0
[-0]原 =100...0 - 进行四则运算时,符号位须单独处
理,且运算规则复杂。
2. 反码
• 正数的反码与原码表示相同。
• 负数的反码与原码有如下关系:
符号位相同(仍用1表示),其余各位取反
(0变1, 1变0)。例如:
X=-1100110
[X]原 =11100110 [X]反 =10011001
X=+0000000
[X]原 =00000000 [X]反 =00000000
• 反码中零的表示也不惟一
X=-0000000
[X]原 =10000000 [X]反 =11111111
• 反码只是求补码的中间码
3. 补码
-
计算机中的补码表示法:
- 负数的补码由该数反码的末位加1 求得
- 对补码再求补即得到原码
-
补码运算规则
- 符号位可作为数值参加运算
- 减法运算可转换为加法运算:
加上一个负数等于加上该数的补码
- 补码运算的结果仍为补码
- 运算结果溢出:
负数之和得正数,或正数之和得负数
四、数据类型
计算中的数据可以按类型分为数值数据和非数值数据。
1. 数值类型
- 计算机中通常采用浮点方式表示实数
- 一个数 N 用浮点形式表示可以写成:
$$N=M×2^E$$- E表示2的幂,称为数N的阶码。阶码确定了数N的小数点的位置,其位数影响该浮点数所表示的范围。
- M表示数N的全部有效数字,称为数N的尾数。其位数影响数据的精度。
- 机器数在机内存储的最高位表示符号位;0表示正,1表示负;剩下各位表示数值。这类编码:原码,反码,补码。
- 计算机中表示小数点的方法有:定点表示法,浮点表示法。计算机中表示小数点的方法有:定点表示法,浮点表示法。
- 目前大多高级程序设计语言都采用浮点数的存储格式。
- 对一个位长n的浮点数来说,由符号位,阶码,尾数3部分组成。 对一个位长n的浮点数来说,由符号位,阶码,尾数3部分组成。
- 符号位表:0正1负。
- 阶码:表指数大小
- 尾数:小数的有效位数
1.1 基本数据类型
1) 整型数据
进制 | 表现形式 |
---|---|
十进制 | 默认表现形式 |
八进制 | 以数字0作为前缀 |
十六进制 | 以0X或0x作为前缀 |
数据类型 | 字节 |
---|---|
int | 4字节 |
short int | 2字节 |
long int | 4字节 |
unsigned int | 4字节 |
2) 实数类型(浮点类型)
-
由整数与小数两部分组成
-
分为十进制数与指数(计算机中的实数以指数形式存放在存储单元中)
float 4字节 double 8字节
3) 字符类型
用英文单引号括起来的字符:'A','a'...
存储时,以字符对应的ASCII码值进行存储
有写特殊字符需要使用转义符:'\n'换行
char,unsigned char,signed char 占用1字节
4) 布尔类型
bool : true ,false
占用1字节
- 算数运算:true=1,false=0
- 逻辑运算:true(非0值),false(0值)
2. 非数值类型
用若干位组成的二进制数来表示一个符号。
一个二进制数只能与一个符号相对应。
- 西文字符:
- ASCII码:用7位二进制数表示一个字符,最多可以表示2^7=128个字符
- EBCDIC码:用8位二进制数表示一个字符,最多可以表示2^8=256个字符
- 汉字:
- 应用较为广泛的是"国家标准信息交换用汉字编码"(GB2312-80标准),简称国标码。是二字节码,用二个七位二进制数编码表示一个汉字。
- GBK码 汉字编码
五、常量
- 常量的值不可以改变
- 常量包含两大类:
1. 数值型常量
2. 字符型常量
1. 字面常量
从字面形式既可以识别的常量
1.1 整形常量
三种表示方法
- 十进制
- 八进制
- 十六进制
1.2 实型常量
二种表示方法:
-
十进制小数表示
22.22, -56,32
-
指数形式
一般形式:数符 数字部分 指数部分3.141592610^0-->3.1415926e0 //e后面的数字代表以10为底的幂
0.3141592610^1 -->0.1415926e1
1.3 字符常量
用单引号' ' 号括起来的单个字符。
存储时存放的是字符对应ASCII码值
'a', 'A'
1.4 字符串常量
- 双引号括起来的字符。
- 内存中存储空间不定长 系统自动在末位添加’\0'
"hello world"
1.5 布尔常量
2. 符号常量
-
用一个标示符代替一个数值。
-
C++中符号常量定义格式:
#define 符号常量名 数值
-
符号常量不占内存,只是一个符号,符号常量不能被重新赋值。
3. 常变量
-
格式:
const 数据类型 符号常量名=数值;
-
一般用常变量代替符号常量
-
在定义常变量时一定要赋初值,且在程序运行过程中不可更改。
六、变量
1. 标识符
C++中,变量名必须用标识符来命名。
- 由字符,数字,下划线组成。
- 第一个字符必须是字母或下划线。
- C++中大写字母和小写字母代表不同标识符。
- 标识符不可与C++关键字同名。
2. 变量定义与赋值
-
变量必须先定义后使用。
-
变量定义格式:
数据类型 变量名1[,变量2,...];
-
变量初始化:
定义变量时,可用赋值运算符“=”赋初值。
若定义变量时未赋初值,则该变量所代表的内存空间可能是系统默认值,或是该内存空间之前运算后留下来的无效值,由系统编译器决定。 -
常变量(只读变量):
格式:const 数据类型 符号常量名 = 数值;
一般用常变量代替符号常量
在定义常变量时一定要赋初值,且在程序运行过程中不可更改。
具有变量的特征,具有类型,在内存中开辟的有以它命名的存储单元。
七、C++运算符
根据运算符的操作数的个数分类:
- 单目运算符
- 双目运算符
- 三目运算符
1. 常用运算符:
- 算术运算符
+、-、*、/、%、++、--
2. 关系运算符
<kbd> >、< 、==、>=、<=、!= </kbd>
3. 逻辑运算符
<kbd>&& (逻辑与),||(逻辑或),!(逻辑非)</kbd>
4. 位运算符
<kbd> <<(按位左移), >>(按位右移), &(按位与) </kbd>
<kbd> |(按位或) ,^(按位异或),~(按位取反)</kbd>
5. 赋值运算符
<kbd>==</kbd>
6. 条件运算符
<kbd> ? :</kbd>
- 一般形式
表达式1?表达式2:表达式3
表达式1 必须是 bool 类型
2. 执行顺序
– 先求解表达式1,
– 若表达式1的值为true,则求解表达式2,表达式2的值为最终结果
– 若表达式1的值为false,则求解表达式3,表达式3的值为最终结果
7. 逗号运算符
,
- 格式
表达式1,表达式2
- 求解顺序及结果
先求解1,再求解2,最终结果为表达式2的值
> a = 3 * 5 , a * 4 最终结果为60
- 指针运算符
* - 地址运算符和引用运算符
& - sizeof运算符
- 语法形式
sizeof (类型名) 或 sizeof 表达式
- 结果值:
“类型名”所指定的类型,或者“表达式”的结果类型所占的字节数。
- 语法形式
- 复合赋值运算符
a+=3;
b*=8;
2. 运算符优先级(高-->低)
括号
++, --, sizeof
*, /, %
+, -
==, !=
位运算
&&
||
?:
赋值运算
逗号运算
八、算术表达式
1. 数据类型的转换
1.1 自动类型转换
数据类型从 低——>高
1.2 强制类型转换
将一种数据类型转换成另一种数据类型,不安全,可能丢失数据位。
格式:
(类型名)表达式 or 类型名(表达式)
强转的原数据类型不会改变。
2. 自增和自减
a=++i;i先自增,再赋值给a
a=i++;i先赋值給a,再自增
(- -同理)
- 后缀自增 从左到右 (i++)++
- 前缀自增 从右到左 ++(++i)
九、逗号表达式
逗号表达式按照结合性从左到右求解,整个逗号表达式是最后一个表达式的值。
赋值运算符的优先级别高于逗号运算符的优先级
a=2+3,b=1*4,a=a+2;
最终a=7;
十、位运算表达式位
位运算表达式中操作数只能为整型数据
运算符 | 操作 |
---|---|
& 按位与 | 都为1时,才取值1;否则为0 |
^ 按位异或 | 相同为0,不同为1 |
>>右移 | 左端添加0 |
按位或 | | 凡出现1取值1,;否则为0 |
<<左移 | 右端天津0 |
~ | 按位取反 |
举例: |
a=99 b=66
a: 00000000 00000000 00000000 01100011
b: 00000000 00000000 00000000 01000010
~a: 11111111 11111111 11111111 10011100
a&b:00000000 00000000 00000000 01000010
a|b: 00000000 00000000 00000000 01100011
a^b:00000000 00000000 00000000 00100001
a<<2:00000000 00000000 00000001 10001100
a>>2:00000000 00000000 00000000 00010000