1.前言
众所周知,在C语言中数据类型不是很多,连bool类型都没有,我们有必要来学习一下,而且运算符的次序之类的和编译器如何为变量分配内存,这些知识虽然基础,但是也很重要,今天就来整理一片个人拙见,与大家分享.
2.详述
2.1.内存如何存放数据或指令
变量是指其值可以变化的量。计算机中,指令代码、数据都存储于内存中。变量也需要存储在内存中。在计算机中,每个变量都被分配了一块内存空间,在这些空间里存储的就是变量的值。变量之所以可以变化,就是这个存储空间可以存储不同的数值。存储空间里的值变化,则变量对应的值也变化。同一个时间,内存空间里只能保存一份值,新值冲掉了原来的旧值。每个内存单元都有编号,这些是内存的地址。
例如:
int a = 1,b = 2,c;
c = a + b;
这里就会开辟3个内存空间 ,记录其数据类型为int类型,分别用a,b,c三个变量名代表.a的内存地址存放的值为1,b的内存地址存放的值为1,由于c未初始化,所以其值为垃圾的值.当c = a + b;执行完,计算机会把 a和b的值相加,赋值给c的内存地址的值,这样此时c的值就为3.
对于上面加法部分的代码可以用汇编来解释:
_asm
{
mov eax, 1
add eax,b
mov c,eax
}
首先现将a的值1移动到eax寄存器中,然后把b和eax的值相加,最后把eax的值赋值给c.
变量声明的意义:
(1).建立变量符号表,规定了程序中用了多少变量,类型和名称.
(2).变量的数据类型说明了要为其分配多少内存.如何解释存储空间的值.规定了变量的取值范围.
(3).不同的数据类型有不同的操作.
2.2.数据类型与内存
计算机内存最小的单位为位(bit),而地址标号是以8位也就是1个字节(Byte)为单位的,每隔8bit,地址编号+1.C语言中:
char字符占1个字节(取值范围-127~127),
short短整形占2个字节(取值范围-32767~+32767),
int根据操作系统占得字节不同,win32系统为4字节,老系统TC中占2字节,
long占4个字节,
float占4个字节,
double占8个字节.
2.3.常见的ASCII值(字符:码值)
NUL:000,'0':48,'A':65,'a':97.
2.4.printf中的格式字符
%d--带符号的十进制整数
%o--无符号八进制整数
%x--无符号的十六进制整数
%u--无符号的十进制证书
%c--字符形式
%s--字符串形式
%f--小数形式
%e--指数形式
%g--精简的小数,指数形式,选择前两者中的最简单的方式输出,去掉多余的0
3.结语
以上就是最近学习的个人总结,与大家分享之.