一.C语言基本数据类型

1.整型

①.整型类别

int 十进制打印(%d) 八进制打印(%o) 十六进制打印(%x)

short int 类型(或者简写为short),占用空间小,有符号类型

long int 类型(或者long),占用空间可能比int多,适用于较大数值的场合。有符号类型。

long long int 或 long long(c99标准加入)占用空间可能比long多,适用于更大数据的场合。有符号类型。

unsigned int 或 unsigned只用于非负值的场合。这种类型与有符号类型表示的范围不同。例如:16位unsigned int允许的取值范围是0-65535,而不是-32768-32767.

在任何有符号类型前面添加关键字signed,可强调使用有符号类型的意图。

常见设置是,long long占64位,long占32位,short占16位,int占16位或32位。

②.整数溢出 

#include <stdio.h>
int main(void){
    int i=2147483647;
    unsigned int j=4294967295;

    printf("%d %d %d\n",i,i+1,i+2);//结果 2147483647 -2147483648 -2147483647
    printf("%u %u %u\n",j,j+1,j+2);//结果 4294967295 0 1
    return 0;
}

当达到它的最大值,会更新从起点开始。

 

2.使用字符:char类型

char类型用于存储字符(如:字符或者标点符号),但是从技术层面看,char是整数类型。

转义字符

转义序列

\a

\b

\f

\n

\r

\t

\v

\\

\'

\"

\?

\0oo

\xhh

含义

警报

退格

换页

换行

回车

水平制表符

垂直制表符

反斜杠

单引号

双引号

问号

八进制

十六进制

打印字符:printf()函数用%c指明待打印的字符,如果用%d转换说明打印char类型变量的值。

有无符号:根据编译器,可以用signed char表示有符号类型,unsigned char表示无符号类型。

 

3. _Bool类型

1表示true,0表示false,所以_Bool也是一种整数类型,存储空间1位即可。

 

4.float、double和long double

①.基础概念

float取值范围10指数-37-----10指数37,储存空间32位。其中8位用于表示指数的值和符号,剩余24位用于表示非指数部分及其符号。

double是64位。long double满足更高精度。

②.%f打印十进制计数法的float和double类型浮点数,用%e打印指数计数法的浮点数。

③.浮点数的上溢和下溢

上溢:现在c定义为无穷大,inf或者infinity

下溢:会丢失精度,除数较大会直接都变成0.

还有一种未定义的值是NaN

④.浮点数的舍入错误

给定一个数,加上1,再减去原来给定的数,结果可能不是1

include <studio.h>
int main(void){
    float a,b;
    b=2.0e20+1.0;
    a=b-2.0e20;
    printf("%f \n",a);
    return 0;
}
//该程序输出结果如下:
//0.000000                linux系统下的老式gcc
//-13584010575872.000000  Turbo c 1.5
//4008175468544.000000    Xcode 4.5、Visual Studio 2012、当前版本的gcc

得出这些奇怪答案的原因是,计算机缺少足够的小数位来完成正确的运算。float精度不足。后面统一表示为第三种输出格式。