目录
1、整型(int、short、long、long long)
前言
学习任何一门编程语言,首先我们就应该从最基础的数据类型去学习。因为我们在写程序是总离不开去定义各种的变量,比如我们需要去开发一个学籍管理系统,我们需要记录学生的姓名、学号、成绩、身份证号等等。那么这时候就需要数据类型啦!因为如果你没有正确的去定义他们的数据类型,就会造成资源浪费或者内存溢出。那么下面就来说说C语言中有哪些数据类型,这些数据类型他们的大小、数值范围是多少呢,我们该怎么去具体选择呢,一起来康康叭!
一、数据类型的分类
C语言的数据类型大致可以分类四大类:
上面就是我们C语言里面所有的数据类型,这篇文章主要来介绍一下基本的数据类型。
二、基本数据类型
这里我们对常用的基本数据类型做一个详细的了解探讨,在C语言中,基本数据类型包括整型、布尔型、字符型和浮点型。
- 整型:只能表示整数,对应于一部分有理数中的整数;
- 浮点型:能表示小数,对应于一部分的分数;
- 布尔型:特殊类型,该类型的数据只有两个:true或者false,也可以是1或0;
- 字符型:属于整型的一种,表示一个字符;
1、整型(int、short、long、long long)
1.1 int 类型
数据类型大小是 4 字节,能表示的数值范围是
-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)
打印类型是 %d ,使用格式为 int 名 = 值;
1.2 short 类型
数据类型大小是 2 字节,能表示的数值范围是
-2^(16-1) – 2(16-1) -1 (即 -32768 ~ 32767)
打印类型是 %hd ,使用格式为 short 名 = 值;
1.3 long类型
数据类型大小是 4 字节,能表示的数值范围是
-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647)
打印类型是 %ld ,使用格式为 int 名 = 值;
1.4 long long类型
数据类型大小是 8 字节,能表示的数值范围是
-2^(63) ~ 2^(63)-1 (这个数足够大了)
打印类型是 %lld ,使用格式为 long long 名 = 值;
数据类型 | 大小 | 范围 | 打印格式 |
int | 4 Byte | -2147483648 ~ 2147483647 | %d |
short | 2 Byte | -32768 ~ 32767 | %hd |
long | 4 Byte | -2147483648 ~ 2147483647 | %ld |
long long | 8 Byte | -2^(63) ~ 2^(63)-1 | %lld |
#include<stdio.h>
int main(void) {
short a = 11;//短整型数据占2个字节
int b = 97;//整型数据占4个字节
long c = 99;//长整型数据占4个字节
long long d =67;//长整型数据占8个字节
printf("短整型数据 a 占 %d 个字节\n",sizeof(a));
printf("整型数据 b 占 %d 个字节\n",sizeof(b));
printf("长整型数据 c 占 %d 个字节\n",sizeof(c));
printf("长整型数据 d 占 %d 个字节\n",sizeof(d));
return 0;
}
运行结果:
2、浮点型(float、double)
1、关于浮点数在机器中存放形式的简单说明,浮点数 = 符号位+指数位+尾数位。浮点数是近似值。
2、尾数部分可能丢失,造成精度损失。
2.2 单精度浮点型(float)
单精度浮点型占内存大小为 4 字节
float m1 = 3.14;
unsigned float m1 = 3.1415926; 无符号的 float 数据
格式匹配符是:%f , 默认保留 6 位小数。
2.3双精度浮点型(double)
双精度浮点型占内存大小为 8 字节
double m2 = 3.14;
unsigned double m2 = 3.1415; 无符号的 double 数据
printf(“n = %05.4f\n”, n);
输出的含义为:显示5位数(包含小数点), 不足5位用0填充。并且保留4位小数。对第5位做四舍五入。
数据类型 | 大小 | 范围 | 精度 |
float | 4 Byte | −3.4∗1038+3.4∗1038 | 十进制下,小数点后6~7位有效 |
double | 8 Byte | −1.7∗10+308∼+1.7∗10+308 | 十进制下,小数点后15~16位有效 |
#include <stdio.h>
int main(void)
{
float m = 3.1415;
double n = 5.675674;
printf("m = %08.2f\n", m);
printf("n = %08.3lf\n", n);
return 0;
}
3、字符型(char)
字符型其实可以看作是整型的一种,它的标识符为“char”,其中每个字符变量都会占用 1 个字,它也分为有符号和无符号两种,读者完全可以把它当成一个整型变量。当字符型存储变量时,实际不是真正的把字符存入到存储单元中,而是将字符的ASCII 编码放到变量的存储单元中。所以char类型的本质就是一个1字节大小的整型。
char 的格式匹配符(打印格式) 为:%c
数值表示范围是:
有符号: -2^(8-1) – 2(8-1) -1 (即 -128 ~ 127)
无符号: 0 ~ 2^8 -1 (即 0~255)
#include <stdio.h>
int main(void)
{
char ch = 'A'; // 65
printf("1 ch = %d\n", ch);
ch = 'm'; //
printf("2 ch = %d\n", ch);
ch = 'a'; // 97
printf("3 ch = %d\n", ch);
printf("占内存大小%d\n", sizeof(ch));
return 0;
}
总结
当我们在定义变量时,选择正确合适的数据类型,既可以提高空间利用率,同时也可以避免溢出等问题的出现。