目的:基本了解数据在计算机中的存储方式,还有数据的表示形式以及他的基本运算
一、分类:基本数据类型+非基本数据类型
a:基本数据类型(内置类型):
整型(短整型“short int”/长整型“long int”/超长整型“long long int”/整型“int”)
字符型(char/)
浮点型(也称为实型)(单精度型“float”/双精度型“double”/长双精度型“long double”)
布尔型(bool)
b:非基本数据类型(自定义类型):
派生类型:指针型(*)、枚举类型(enum)、数组类型([ ])、结构体类型(struct)、
共用体类型(union)、类类型(class)(对于面向对象编程class很重要)
空类型(void)
c:补充:1.布尔型就是逻辑型(要么为真,要么为假),空类型就是无值型(无返回值),空 指,针指向NULL
2.数据结构定义:数据的组织形式
二、字节数与数值范围 (图片来源于网络)
⚠️:分配到的字节数是系统决定的,不是C++决定的,所以有些系统分配的字节数是不同的,例如:VS里给long double分配的是8字节,GCC所分配的是12字节,但大多时候是统一的
1、补充:
a:short int的字节数 < int的字节数 < long int的字节数,“[ ]”是可以省略的意思
b:1字节(byte)=8个位长(bit)
c:整型数据的存储方式都是按二进制存储的
d:int和char前可以加修饰符signed(表示有符号的意思)或者unsigned(无符号的意思),有符号时储存的最大值为2^15-1(32768),最小值为-32768,无符号时最大值为2^16-1(65535),最小值为0
注意⚠️:只有在int和char才有修饰符signed/unsigned,并且是signed形式的话,会按补码形式存放,最高位将会表示数值的符号,1为负,0为正,int型一般默认有为signed int,char不是,所以要手动加unsigned或signed,如果你输入的是char,那么系统解读他是有符号或者无符号的话,看系统定
e:浮点型(实型),VS系统中,float提供6位有效数字,double提供15位有效数字
2.2常量
一、常量的定义及分类
1、定义:不变的量
2、分类:
例如:12,22,2是整型常量;2.2,1.2,0.2是实型;‘x’ ,‘a’就是字符常量;这种可以从表面看出他是常量称为“字面常量”或“直接常量”,后面还有一种加const的一种类型,也是表示常量的意思,因此也会有常变量
二、数值常量(也称为“常数”)
1.整型常量(整数)的类型,int+int系列的类型,这我们重点说一下进制及其转换
a:十进制(dec):例如222,23等,若在常量后加l或L,表示long int型,例如233l,233L等
b:八进制(oct):要在常数前加0,例如020表示八进制20
c:十六进制(hex):要在开头加一个数字0和一个英文字母X(或x),例如020x,020X等
2.转化为二进制—关键:短除法(简单介绍,感兴趣的朋友可以到网络搜集相关视频)
a:十进制转化为二进制:短除法“除二取余,倒叙排列”,可以整除2的取0,不可以整除取1
b:八进制转化为二进制:同十进制一样
c:十六进制转化为二进制:同十进制一样
3.二进制转化为其他进制—相对转化为二进制要更麻烦一点
a:二进制转化为十进制:按权展开式
b:二进制转化为八进制:三位为一组,前面不够三位补0
c:二进制转化为十六进制:“8421”法,0对应的数字不要
3.浮点数的表示方法
a:十进制小数形式:有整数部分和小数部分构成,例如2.1,2.22等,若前面加了F(或f),表示单精度浮点数,如果加L(或l),表示长双精度数
b:指数型式(即浮点型式):一个浮点数可以表示为指数形式,例如3.14159,可以为0.314159*10^1,3.1415926*10^0等,也可以是0.31415926e1,3.1415926*e0,e表示以10为底的幂,例如10^2 = e2,且尾数越多精度越高
3.字符常量
a:普通的字符常量:单撇号括起来的一个字符就是字符常量
注意⚠️:a:字符常量是包括一个字符,例如‘aa’就不合法
b:字符常量要分大小写,且‘大写字母’+32=‘小写字母’
c:‘ ’属于定界符,不属于字符常量的一部分
b:转义字符常量,一般以\开头(图片来自网络)
c:字符在数据内存中的存储形式以及使用方法
用的是ASCII码进行存储,则就是利用整型进行存储(图片来自网络)
#include
using namespace std;
int main()
{
int i=0,j=0,m=0;
i='a';
j='A';
m=i-j;
cout<<"i是:"<
三、变量
1.变量的定义:在程序运行期间值可以改变的
变量名的定义:变量的名字
注意⚠️:要区分变量名和变量值
2.变量名的规则
a:标识符的定义:用来标识变量、符号常量、函数、数组、类型等实体名字的有效字符序列(就是一个名字)
注意⚠️:标识符只能由字母(小写)、数字、下划线3种字符组成,且第一个字符必须是下划线或者字母,且大写字母和小写字母被认为不同的字符,
例如:合法的:sum,li_line; 不合法的:&ss,SUM
3.定义变量:形式: 数据类型 变量名表列;例如:int a;
4.对变量赋初值
a:初始化:在定义是给他一个值(就是第一步的时候)
b:初值可以是常量,也可以是表达式
c:局部变量:定义时不赋值,为随机值
全局变量:定义时不复制,结果默认为零
d:常变量(也叫只读变量):例如 const int a=3;
表示这个变量存储单位的值不允许变化,且常变量不能复制,例如:const int a;a=3;这种是不合法的
四、C++的运算符(图片来自网络)
a:“/”是取整的意思,“%”是取余数(模数)的意思
b:“==”比“=”多了一个判断的意思,在if语句中是一个易错点
c:“&”不同位置不同意思,例如:int *p,a=0;p=&a;表示取地址;若为int &b=a,表示引用,b是a的别名
五、算术运算符和运算符的优先级与结合性
1.基本运算符: + — * % /
2.表达式中各数值型数据间的混合运算 (图片来自网络)
理解:若是一个char型数据与int型数据相加减,则char会直接转化为一个int型进行加减(由低到高由系统转化)
4.自增(++)和自减(--)运算符
a:种类:i++、++i、--i、i--
只以区分执行的情况,看是先使用还是先进行计算(进行自加或自减),
小诀窍:符号在前:“先计算,后使用”;字母在前:“先使用,后计算”
例子:i++:若i=1,先使用,然后再进行计算变为2
五、强制类型转换运算符
1.形式:(类型名)(表达式)/ 类型名(表达式)/(类型名)变量
注意⚠️:
a:若后面只是一个变量的话,后面的括号可以省略,例如:(int)(x)与(int)x等效,但建议用第一种,降低错误率,
b:强制转换只是得到了一个中间值,原来的变量的类型和值都不变,例如:原来x是float型,且为3.14,但我们把他转化为了int型,变为了3,但它原来的类型(float)和值(3.14)不变
#include
using namespace std;
int main()
{
float x=3.14;
(int)x;
cout<
输出结果是3.14
#include
using namespace std;
int main()
{
float x=3.14;
int i=0;//初始化
i=(int)x;//赋值
cout<
输出的值:第一行为3.14;第二行为3
六、赋值运算符和赋值运算符
1.赋值运算符“=”,原则:不同类型的整型数据间的赋值归根到底就是一条:按存储单元中的存储形式直接传送
2.此处的重点是想强调一下原码、补码、反码
原码:这个数的二进制表示形式,首位为标志位(表示正负,1为负,0为正)
反码:负数符号为不变,其他取反,例如原码是1(非标志位),反码就取0
补码:补码=反码+1
注意⚠️:正数三码相同
3.复合赋值运算符
a:在赋值符“=”前面加上其他运算符,可以构造符合运算符,例如:a+=2等价于a=a+3
a*=y+3等价于a=a*(y+3)
4.复制表达式:变量=表达式
a:这里强调一下左值和右值
做左值的条件:要可以被赋值,左值又可以做右值
右值可以是式子、变量、定值、表达式
七、逗号运算符和逗号表达式(一般出现在循环语句)
1.形式:表达式1,表达式2
注意⚠️:计算顺序:先求解表达式1,在求解表达式2,整个逗号表达式的值是表达式2的值
八、习题
#include
using namespace std;
int main()
{
char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
cout<
共同学习,欢迎指正!