一.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精度不足。后面统一表示为第三种输出格式。