C语言初学过程中几种基本的数据类型

平常做题如果不在意数据类型,输入的数据就容易超出定义的范围,导致WA。

所以今天来总结一下C语言常见的数据类型,包括其大小范围,输入输出符号。

 

大小范围

  整型

    int

    整型变量,占用4字节,范围:-2的31次方~2的31次方-1。

    ※ 其区间长度,刚好是2的32次方。

    short

    短整型变量,占用2字节,范围:-2的15次方~2的15次方-1

    ※其区间长度,刚好是2的16次方。

    long

    即long int

    长整型变量,占用4个字节,范围:-2的31次方~2的31次方-1。(二十亿,约10^{10}

    ※其区间长度,刚好是2的32次方。

    ※和int的大小相同,都占4字节,历史遗留问题。

    long long

    即long long int

    占用8个字节,范围:-2的63次方~2的63次方-1。(九百亿亿,约10^{19}

    ※其区间长度,刚好是2的64次方。

  实型

    float

    单精度实型,占用4个字节,范围从-10的38次方~10的38次方。

    ※其实最大值是1.1111111 1111111 11111111 x {\color{Blue} 2^{127}}。这个形式决定于实型变量在内存中的储存形式。(下次写)

    其中有1个符号位,8个指数位,23个尾数位。

    精度:2^{8} = 8388608,最多能保证7位,至少能保证6位。

      double

    双精度实型,占用8个字节,范围从-10的308次方~10的10的308次方。

    其中有1个符号位,11个指数位,52个尾数位。

    精度:2^{52} = 4503599627370496,一共16位,同理,最多16位,至少15位。

 long double

    长精度浮点类型,占用16个字节。

    ※查不到指数位和尾数位具体有多少,所以范围和精度也不知道。由于不同平台不一样,等我学会怎么用编译器自己查再来补充。

 

    ※在变量名前加入unsigned,会使变量在内存中的第一个bit位用来表示数据而不表示符号,因此数据可以更大,但是只能表示正数。需要注意的是,实型变量在内存中的第一个bit位规定要储存符号,因此实型变量不能加前缀unsigned。

  字符类型

  char

     和整形变量有共通性,占用1个字节,储存的是ASCII码。

     ※ASCII码是7位的,1个字节有8bit,所以ASCII码第一位总是0,总共有2^{7} = 128种字符。

输入输出控制符

        

int%d有符号的十进制整数
unsigned int

%o

无符号的八进制整数
unsigned int%u无符号的十进制整数
unsigned int%x / %X无符号的十六进制整数(分别为大小写)
float输入%f输出%f和%lf都行(%lf是C99之后的)
double输入%lf

同上

float & doublee / E科学计数法,基数为10
float & doublea / A16进制科学法,基数为2(以p表示)
float & doubleg / G

有效位数。%.8g就是保留8位有效数字(似乎只能截取(四舍五入),不能补充。

charc

把储存的数字按照ASCII码转换为相应字符

char []s

输出字符串中的字符直到字符串中的空字符,即\0

void*p以16进制形式输出指针
int*n

到此字符之前,一共输出的字符个数。

        

关于以上提到的历史遗留问题:

C语言开始时只有 char(8位) 和 int(16位) 两种类型。

后来随着发展又把int分为了 short(16位) 和 long(32位) 两种,此时int具体是几位依赖于平台和后续的兼容性。

再后来当64位出现时,又添加了long long ,而为了规范,int逐渐稳定为32位。而long可以是32位或者64位。

C++标准上说long至少要和int一样大。并且整型变量有一下规范:

       sizeof(char)  ==  1

       sizeof(char)  <=  sizeof(short)

       sizeof(short)  <=  sizeof(int)

       sizeof(int)  <=  sizeof(long)

       sizeof(long)  <=  sizeof(long long)

       char和long long的范围一般不变,而其余的类型范围较灵活,与平台相关的,与实现相关。而如果要实现平台独立的话,在windows平台上,就有__intn可以使用,n代表位数。__int8   __int16   __int32   __int64。

 

    

    

 

    

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值