数据类型的分类有哪些?字节大小为?有符号和无符号整型是什么?怎么计算?

1.整型

  •         整型就是整数,分为长整形和短整形,分别为32位长和16位长。表示的数的范围不同。若是无符号整型,就只能表示正整数了。有符号的整型,能表示正整数和负整数。
  • 整型 int:
    •         存储整数,最大整数2147483647=2^31-1
  • 长整型:long
    •         读写操作时,前面加上"l"->%ld,%lo,%lx
  • long long
    •         读写操作时,前面加上"ll"->%lld,%llo,%llx
  • 短整型:short
    •         读写操作时,前面加上"h"->%hd,%ho,%hx

2.实型

        实型实际就是浮点数,有小数部分,分为单精度浮点数和双精度浮点数,分别为32位长和64位长。表示的数的范围不同。

  • 单精度浮点数 float:
    •         输入scanf:%lf、%lg、%le
      •         输出print:%f、%g、%e
  • 双精度浮点数 double:
    •         %e
  • 扩展精度浮点数 long double:
    •         %lf
  • 字符类型
    •         char
      •         %c
      • 'a'97
        • 'A'65
        • '0'48
        • ' '32
        • 一道笔试题:

                  不能做switch()的参数类型是:实型

  • 补充一道代码,把小写字母转换为大写
  • if('a'<=ch&&ch<='z')
    {
        ch=ch-'a'+'A';
    }

    C语言提供toupper()函数来检查是否是小写字母

  • if(toupper(ch)=='A')....

  • 3.字符型

  • char类型
    •         字符型就是8位长整数,若是无符号字符型,就只能表示0~255之间的正整数。有符号的整型,能表示-128~127之间的正整数和负整数。ASCII字符可以用一个字符型表示。

4.枚举类型

5.十进制、八进制与十六进制

  • 十进制:
  •         0-9数字
  •         一定不能以0开头
    •         %u %d
  • 八进制:
    •         0-7数字
      •         必须0开头
        •         %o
    • 十六进制:
      •         0-9 a-f 
        •         以0x开头
          •         十六进制中字母既可以大写,也可以小写
            •         %x

6.有符号与无符号

有符号:第1位一定是用来存储符号,标记正负号。正数或零,左边位(符号位)=0

        负数:符号位=1。最大16位整数的二进制表示形式为0111 1111 1111 1111=32767=2^15-1。最大32位整数是0111 1111 1111 1111 1111 1111 1111 1111=2147483647=2^31-1

无符号:最左边一位是数值的一部分,而不是符号位。最大的16位无符号整数是65535=2^16-1,最大32为无符号整数是4294967295=2^32-1

默认的整数是有符号的,也就是左边位保留符号位。如果要告诉编译器无符号,需要在类型前面加上unsigned

计算:

表示区间:-128~127。如果>127的数字截取其二进制的后8位,并带入其符号位。

eg1:

char a=128;

printf(“%d”,a);

输出过程为:

128二进制->1000 0000

保留后8位:1000 0000

加上符号位:1->负数‘-’

最终结果:-1000 0000->‘-128’

eg2:

char a=129;

printf(“%d”,a);

输出过程为:

129二进制->1000 0001

保留后8位:1000 0001

加上符号位(默认第一位为符号位):1->负数‘-’

负数求解:取反+1:1111 1110 +1=1111 1111=1 0000 0000-1=128-1=127

最终结果:-127

无符号:unsigned。所有位都是数值位。表示区间:0~255

eg1:

unsigned char a=128;

printf(“%d”,a);

输出过程为:

128二进制->1000 0000

保留后8位:1000 0000

最终结果:1000 0000->‘128’

eg2:

unsigned char a=129;

printf(“%d”,a);

输出过程为:

129二进制->1000 0001

保留后8位:1000 0001

最终结果:1000 0001->‘127’

将有符号位转换为无符号:强制转换

char a=10;

b=(unsigned  char)a;

分类:

自定义数据类型:结构型,联合型和枚举型

内置数据类型:char,short,int....语言自带的数据类型

总结基本数据类型:

(1个字节8位)

字符型char:1字节

短整型short:2字节

整型int:4字节

long:4

long long:8字节

浮点型float:4字节

双精度浮点型double:8字节

long double:8 

指针类型:4字节

补充一个:x86平台(32),指针大小4字节;64平台指针大小为8字节

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值