Chapter 2:数据的存储、表示形式和基本运算

目的:基本了解数据在计算机中的存储方式,还有数据的表示形式以及他的基本运算

一、分类:基本数据类型+非基本数据类型

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<iostream>
using namespace std;
int main()
{
   int i=0,j=0,m=0;
   i='a';
   j='A';
   m=i-j;
   cout<<"i是:"<<i<<endl;
   cout<<"j是: "<<j<<endl;
   cout<<"i与j的差是: "<<m<<endl;
}

三、变量 

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 <iostream>
using namespace std;
int main()
{
    float x=3.14;
    (int)x;
    cout<<x<<endl;
    return 0;

}

输出结果是3.14

#include <iostream>
using namespace std;
int main()
{
    float x=3.14;
    int i=0;//初始化
    i=(int)x;//赋值
    cout<<x<<endl;
    cout<<"转化值为:"<<i<<endl;
    return 0;

}

输出的值:第一行为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 <iostream>
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<<c1<<c2<<c3<<c4<<c5<<endl;
}

共同学习,欢迎指正!

  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值