c语言数据类型

前言

        通过之前的学习,大家应该发现在定义变量时需要指定变量的类型,在计算机中,数据时存放在存储单元中的,时具体存在的,存储单元是由有限个字节构成的,每个存储单元存放数据的范围是有限的。

        所谓类型,是对数据分配存储单元的安排,包括存储单元的长度(占多少个字节)以及数据的存储形式。

一.数据类型分类

c语言数据类型_第1张图片

         今天主要讲解C语言中最常用的整型数据,字符型数据,浮点型数据。

二.整型数据

        先给大家看一张表。

c语言数据类型_第2张图片

1.基本整型(int)

        编译系统分配给int类型一般为4个字节(32位),在存储单元的存储方式是:用整数的补码形式存放。

        这里再介绍一下原码,反码,补码

        原码:在数值前直接加一符号位的表示法,对于8位二进制来说:

        [+7]原= 0 0000111 [-7]原= 1 0000111

        反码:正数的反码与原码相同;负数的反码,符号位为“1”,数值部分按位取反。

        [+7]反= 0 0000111 [-7]反= 1 1111000

        补码:正数的补码和原码相同;负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1,也就是“反码+1”。

        [+7]补= 0 0000111 [-7]补= 1 1111001

        其中正整数的原码、反码和补码都一样。

2.短整型(short int)

         编译系统分配给short int类型一般为2个字节(16位),在存储单元的存储方式是:与整型相同。

3.长整型(long int)

        编译系统分配给long int类型一般为4个字节(32位)。

4.双长整型 (long long int)

         编译系统分配给long long int类型一般为8个字节(64位)。

c标准没有具体规定各种类型数据所占用存储单元的长度,是由各编译软件系统自行决定的。

#include

int main()
{
    int a;
    a=sizeof(int);
	printf("%d\n",a);
    return 0;
}


4
PS C:\csay\cyuyan> 

        大家可以使用sizeof查询数据类型的字节数。通过上面的代码可以知道int的字节数为4。

三.字符型数据

1.字符和字符代码

        字符和字符代码不是任意写一个字符程序都能识别的,只能使用系统的字符集中的字符,目前大多数系统采用的是ASCII字符集。

                 c语言数据类型_第3张图片

2.字符变量

        字符变量是用类型符char定,如:

char c = '?' ;

        '?' 的ASCII的代码是63,相当于把63赋值给变量c。

        c是字符变量,实质上是一个字节的整型变量,当时它常用来存放字符,所以称为字符变量,可以把0~127之间的整数赋给一个字符变量。

        输出字符变量的值时,可以选择整数形式输出,也可以以字符形式输出。如:

#include
int main()
{
    char c = 'A';
    printf("%d %c",c,c);
    return 0;
}


65 A
PS C:\csay\cyuyan>

c语言数据类型_第4张图片 

四.浮点型数据

c语言数据类型_第5张图片

        浮点型数据是用来表示具有小数点的实数。浮点数类型把包括float(单精度浮点型)、double(双精度浮点数)、long double(长双精度浮点型)。

1.float(单精度浮点型)

         编译系统分配给float类型一般为4个字节(32位),数值以规范化的二进制数指数形式放在存储单元中。

2.double(双精度浮点数)

        为了扩大能表示的数值范围,用8个字节存储一个double型数据,再C语言中进行浮点数运算时,将float型自动转换为double型,然后进行运算。

3.long double(长双精度浮点型)

        不通的编译系统对它的处理不同,一般为8字节和16字节。

你可能感兴趣的:(数据结构)