一、C语言数据类型
基本类型:系统分配给基本类型的变量的内存空间大小固定
整型
(unsigned) short 2字节
(unsigned) int 4字节
(unsigned) long 4字节
实型(浮点型)
单精度实型 float 4字节
双精度实型 double 8字节
字符型
(unsigned) char 1字节
☆构造类型:系统分配给构造类型的变量的内存大小,决定于该类型具体是怎样定义的
数组类型
结构体类型
联合类型(共用体)
枚举类型
☆指针类型
*
空类型(无值类型) void
二、常量与变量
常量:在程序运行期间,其值不能被改变的量,称为常量
如 1 2 3 3.14
3 = 4; //error,3是一个常量,其值不能被改变
变量: 一个可以改变的量
变量实质上是内存中一个具有特定属性的存储单元,它是用来存放数据的。这个存储单元中
的数据,就是变量的值,而这个值在程序运行期间可以被改变(被赋值)。
变量名: 变量的名字
★系统把内存以一个字节为单位划分成许多份进行编号,这个编号就是地址(无符号32位整数),
即每增加一个字节地址加1。操作系统访问内存哪个单元时,必须要知道它的地址。
在定义变量时,会在内存分配空间(大小根据变量的数据类型),这时变量名就与该空间的首地址
关联起来,即系统由变量名可以知道内存空间的地址。
变量的定义
数据类型 变量名;
eg: int a;
"数据类型":所有的C语言合法的类型
"变量名":给存储数据的那个对象(变量)取个名字
★在C语言中,不管你是给什么对象取名字,都必须要符合C语言标识符的命名规则
C语言标识符必须由字母、数字、下划线组成,且第一个字符必须为字母或下划线。
建议:给对象取名,尽量做到"见其名知其义"。
变量的访问(读/写)
(1)从变量中取值(读),实际上是通过变量名找到相应的内存地址,从该地址对应的存储单元中
读取数据。这时变量一般在赋值号(=)的右边,表示变量的值,我们称为 右值。
(2)给变量赋值(写),实际上是通过变量名找到相应的内存地址,把数值写到该地址对应的存储单元
中去,覆盖原来的值,这时变量一般在赋值号(=)的左边,表示变量的内存空间,我们称为 左值。
给变量的第一次赋值,我们叫做初始化,变量没有初始化,其值是不确定的。
常变量: 定义时用const修饰的变量,初始化后就不能再赋值,即为只读变量。
const int a=3;
a = 4;//error
三、整型数据
整型常量:
十进制数 1,2,3,99 %d(格式控制符)
八进制数 以0开头的 0664 %o
十六进制数 以0x开头的 0x12 %x
整型变量
★整型数据在内存中是以二进制的补码形式存放的,且最高位为符号位,1表示负数,
0表示正数,其它位为数值位。
"补码":
如果存储的数是正数,则就是原码(直接转化为二进制)
如果存储的数是负数,则绝对值的原码取反加1
(1)当编译器以整型输出时(%d),是以补码还原的方式来解读。
(2)当CPU把数据进行运算时,直接以内存中存储的方式进行运算,即补码的形式
(3)当编译器以无符号整型输出时(%u),就没有符号位的概念了,全部都是数值位,
直接转化为十进制输出。
C语言各整型之间的赋值的问题
长->短: int=>short short=>char int=>char
只保留低字节
短->长:
unsigned:低字节直接拷贝,高位补0
signed:低字节直接拷贝,高位补符号位
有符号和无符号的本质区别:
数据拷贝到CPU内部寄存器的方式不同:signed高位补符号位,unsigned高位补0
(1)unsigned char a=255;
char b=255;
printf("%d %u\n",a,a);//255 255
printf("%d %u\n",b,b);//-1 4294967295
(2)unsigned short a=-1;
int b = a;
printf("%d\n",b);//
四、浮点型数据
单精度 (float 32bits) %f
双精度 (double 64bits) %lf
五、字符型数据 %c man ascii
char ,unsigned char (8bits)
在内存中字符型数据的存放,实际上存放的是ASCII码(给每个字符一个整数值)
字符常量 ''
'a' '1' '+' '?'
'\n' 换行
'\t' 横向跳格(Tab横向制表)
'\r' 回车,回到本行行首
'\\' 反斜杠
'%%' %
'\ddd' ddd表示1到3位八进制数,打印效果为该数字对应的ASCII码的字符
'\xhh' hh表示1到2位十六进制数,打印效果为该数字对应的ASCII码的字符
字符串常量 "","abcdef" %s
每个字符串在内存中保存都会在末尾有一个终止符 '\0'(它的ASCII码就是0)
数据类型
最新推荐文章于 2023-09-13 20:13:13 发布