一.数据类型
整型(整数):字符型(char
)、短整型(short
)、整型(int
)、长整型(long
)和长长整型(long long
)
浮点型(小数): 单精度型(float
)、双精度型(double
)和长双精度型(long double
)
1.获取类型大小
int n;
printf("%d",sizeof(int));
printf("%d",sizeof(n));
2.各种类型的大小
3.字节
sizeof获得数据的单位是Byte(字节)。
Byte(字节)是计量存储容量的一种计量单位,一个字节是8位二进制,可容纳256个数字。一个ASCII字符就是一个字节。
除字节外的存储容量单位:
①bit 计算机中的最小数据单位,1个Byte(字节)=8个bit(比特/位)
②word 计算机CPU一次操作处理实际数据最大位数,我们常说的32/64位就是计算机的字。 ③
③KB,MB,GB,TB
注:我们用B
表示Byte(字节),用b
表示bit(比特/位)
4.输入输出格式化 (占位符)
char %c,short %hd,int %d,long %ld,long long %lld
float %f,double %lf,long double %Lf
二.整数类型
1.无符号整型
整型有无符号(unsigned)和有符号(signed)两种类型,在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号整型和有符号整型的区别就是无符号类型可以存放的正数范围比有符号整型中的范围大一倍,因为有符号类型将最高位储存符号,而无符号类型全都储存数字。比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。在一些不可能取值为负数的时候,可以定义为unsigned,在一些底层的嵌入式编程的数据一般都是无符号的。
输入输出无符号整型格式:
No. | 类型 | 占位符 |
---|---|---|
1 | char | %u |
2 | short | %hu |
3 | int | %u |
4 | long | %lu |
5 | long long | %llu |
2.整型类型选择
①大多数情况下使用int
。
②如果int
范围不够,使用long long
。
③避免使用long
。
④谨慎使用unsigned
。
三.浮点类型
1.浮点数的范围
inf : 正无穷大
-inf : 负无穷大
nan : 不存在
2.浮点类型没有无符号unsigned
类型。
3.浮点类型的选择
①大多数情况下使用double
。
②尽量不要使用float
。
③过程运算可以使用long double
。
四.字符类型
通常使用%c
作为格式化占位符输入输出,有时也可以使用%d
输出字符对应ASCII编码。
1.运算
printf("%d",'a'); #输出的是字符的ASCII编码
printf("%c",97); #按字符打印
例:把字符123输出为数字123
#include<stdio.h>
int main(){
char s[100];
scanf("%s",&s);
int n = 0;
for(int i=0;'\0'!=s[i];i++){
n=n*10+(s[i]-'0');
}
printf("%d\n",n);
}
五.数据转换
1.自动类型转换
当运算符左右两边操作数的类型不一致时,会自动转换成较大类型。
- 整型:
char
→short
→int
→long
→long long
- 浮点型:
int
→float
→double
→long double
2.强制类型转换
语法:
(转换后的类型)值
例:
printf("%d\n",(int)3.14);//输出为:3