C语言的数据类型

每种语言中都含有不同类型的数据类型,如整数、浮点数、字符、字符串等。在C语言中,常用的类型有int(unsigned int、long int 、long long int ) 、float(long、double)、char,字符串则为字符串数组。

本篇整理主要关于各类类型适用场景、储存空间中所占位数以及转换说明符。
 

目录

整数

浮点数

字符char

布尔类型_Bool


整数

  1. 各种类型整数的总结
    类型在内存中的位数n表示范围转换说明符
    short16位同int%h
    int16或32位
    取决于系统
    -2^{n-1}\rightarrow 2^{n-1}-1-32768~32767(16位)%d(十进制)
    %o或%#o(八进制,后者会显示0作为前缀,下同)
    %x或%#x(十六进制)
    unsigned int同int0\rightarrow 2^{n}-1
    0~65,535(16位)
    %u
    long int不少于int
    一般32位
    -2^{n-1}\rightarrow 2^{n-1}-1
    -2,147,483,648~2147,483,647
    %ld(十进制)
    %lo或(八进制,后者会显示0作为前缀)
    %lx(十六进制)
    long long int64位-2^{n-1}\rightarrow 2^{n-1}-1%lld

  2. int类型
    此处主要介绍二进制(Binary)、八进制(Octal)、十进制(Decimal)、十六进制(Hexadecimal)。

    一般而言使用的是十进制,但对于计算机系统而言,八进制、十六进制也十分常用,因为可以更简洁地表示二进制位模式/组合(bit pattern),因为二进制中3位代表八进制的1位,4位代表十六进制的1位。

    在C语言中,在数字前面加特定的前缀表示各种进制:
    二进制——无前缀,但会形成由0、1组成的位组合。如5的二进制即为0000000000000101(16位)
    八进制——0
    十进制——无前缀
    十六进制——0x或0X

    需要注意的是,无论以什么进制表示数字,其在计算机内均以二进制的形式储存。
     
  3. short int
    有符号整数,占用储存空间可能比int小的整数类型,,以代替int节省空间。
  4. long int 
    有符号整数,能够表示比int范围更大的整数,适用于需要较大数值的情景
  5. long long int
    有符号整数,能够表示比long int还大的数值,适用于64位系统中需要大数值的场景。
     
  6. unsigned int
    无符号整数,因此正数范围比int类型大,适用于只需要使用非负数的场景,如计数、地址。
     

浮点数

浮点数就是数学中的小数。按照精度的不同分为单精度(float)与双精度(double);按照位数的不同,还分为double、long double等。
 

  1. 计算机中浮点数的表示方法
    在计算机系统中,一个浮点数由符号+指数+尾数三部分组成。对于float,其占32位,前8位为符号+指数,后24位为尾数。

    在计算机系统中,浮点数需要先经过规范化的过程,再将各部分储存起来:其首先将一个浮点数转为一定位数的二进制数,后通过移动小数点使得二进制数的小数点左边只剩一个1。

    该值的原始数值以“± 2的指数×1.xxxxxx”的形式表示。其中.xxxx就是尾数,具体的x有几位即代表了数的精度。
     
  2. 各类型浮点数的总结
    类型在内存中的位数n表示范围有效数字
    (精度)
    转换说明符
    float32位10^{-37}\rightarrow10^{37}6%f
    double64位
     
    10^{-37}\rightarrow10^{37}10%f或%e(指数记数法的浮点数)
    long double64位
     
    10^{-37}\rightarrow10^{37}至少不低于double%lf(十进制)
    %la或%lA(十六进制下指数记数法的浮点数,a/A分别代替e/E)
  3. 一个特殊的浮点数——NaN
    NaN的含义是Not a Number,其用于部分数学函数的返回值不存在的情景,以表示该行为未定义。如给反正弦函数asin()传入大于1的参数,此时返回值即为NaN,若用printf()打印出结果,即显示为nan或NaN或其他类似内容。
     

字符char

C语言中,会将char类型的变量视为int类型的变量。

  1. 占位数
    字符类型在系统中所占位数为1字节(即8位)。
  2. 初始化
    char类型变量初始化时,需要使用单引号'',如:
    char c='A';
  3. 转换说明符
    用%c表示char类型的变量以输入或者输出变量。
  4. 转义序列
    char类型的变量值只有256个,如字母、控制字符等。部分序列不能打印出来,但具有其他的含义,如换行、回车等,具体如下:
    转义序列含义
    \a警报
    \b退格
    \f换页
    \n换行
    \r回车
    \t水平制表符
    \v垂直制表符
    \\反斜杠\
    \'单引号
    \"双引号
    \?问号
    \0oo八进制值,oo必须是有效的八进制数,o的数量可变。
    \xhh十六进制值,hh必须是有效的八进制数,h的数量可变。
    对于char类型,其实还可以通过“\+0~255的数字”来表示出各个char类型的值。
     

布尔类型_Bool

C99标准添加了_Bool类型表示布尔值。在C语言中,1代表true,0代表false,实际上_Bool类型还是整数类型,但只占用1位储存空间。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值