c语言中的基本数据类型

来源:互联网 发布:天谕凌体型捏脸数据 编辑:程序博客网 时间:2024/06/06 09:05

  C语言作为一种强类型语言,对数据类型有严格的要求。C语言中所有的数据必须先定义后使用。数据类型一经定义在程序运行的整个周期内是无法更改的。所谓的数据类型的强转也只是重新产生一个新的临时空间,在临时空间内对已定义的数据类型进行扩充或截取后,再将临时空间中的数据和数据类型赋值给变量。 C语言中的基本数据类型有:char(1byte)、short int (2byte)、int(4byte)、long long int (8byte)、float (4byte)、double(8byte)、bool (1byte)。以及 unsigned char、unsigned short int、unsigned int、unsigned long long int等。

  那么为什么要对数据进行先定义后使用呢?那是因为,对数据进行定义和声明可以通知编译器在内存中为这个数据划分多大的内存空间。对数据进行预先定义可以让编译器帮助检查程序中潜在的错误,对于编程将大大有帮助。而且对数据的先定义后使用将大大的增加程序的可读性。

 C语言中的数据类型所占的字节数并不是固定的。它和计算机有关。例如int在32和64位的计算机上占4个字节,而在16位的计算机上只占2个字节。

 凡是基本数据类型所产生的临时空间都具有常性。例如:int a=1;int b=2;int c=0;a+b=c;这是是错误的。即不能给表达式赋值。这是为什么呢?因为a+b是整型a和整型b所产生的一个临时空间。不能对临时空间赋值,所以编译是不能通过的。

  数据在计算机中的存储都是以二进制形式存储的。正整数和负数在计算机中都是以补码形式存储的。正整数的补码和源码、反码相同,负数的补码是其源码取反后再加一。负数的补码取反加一后就是起源码。不论正负数其在计算机中的存储都是存其补码形式。补码的最高位是符号位。

  不同数据类型之间是不能相互赋值的。当发生强转后进行赋值时,将会发生数据的扩充和截断。当小的数据类型强转为大的数据类型时就会发生扩充。对于正数来说将扩充0。负数则扩充其符号位,即扩充1。当大的数据类型向小的数据类型强转时,将截取数据的低位数据进行存储。数据的扩充和目标无关只和符号位有关。

  计算机的存储分为大端存储和小端存储。小端存储(如intel)是将数据的高位存储在高地址中,数据的低位数据存储在低地址中。大端存储则相反,即将数据的高位存在内存的低地址中低位数据存储在内存的高位地址中。

  C语言的预编译指令#。所谓预编译就是说在程序正式开始编译之前对程序进行的一种预处理。即处理程序中用#标记的部分,包括#include、#define。这些处理都是在程序的预编译阶段进行的。#include指令是对程序中将要使用的头文件包含到程序的源代码中,以保证程序的完整性。#define则是程序的一个宏定义指令。它可以定义一个宏。宏可以做到一概全改,对程序的修改将很有帮助。但宏定义也有局限性,宏定义对数据类型不做任何检查。在预编译中直接将宏名进行机械性地替换。

  C语言能够分配的最小内存单元是1字节。不能达到bit级。所以,即使是bool类型的数据所占用的内存空间也是1byte。

  任何一个程序一旦运行起来都可以分成4个区:1.代码区(代码)、2.全局变量区(data)、3.堆取(heap)、4.栈区(stack)。代码区存放的是程序运行的代码。全局变量区存放的是所有在函数之外定义的变量。堆区又称自由区,它的使用必须进行申请,使用完之后必须进行释放。栈区里存放的是所有在程序内部定义的变量。

  

原创粉丝点击