目录

【飞郁2022新课程】07 - 数据类型 和数据宽度

一、数据宽度

首先在了解数据类型之前 我们要了解数据宽度

任何的数据类型都是有宽度的,宽度就是表示这种数据类型的数据占多大的空间。

数据宽度的两个基本单位是字节和位。

这里的位说的是二进制,一位就是一位二进制(只能用0或者1 来表示)

位是计算机最小的储存单位 。

一字节等于8位,等于两位16进制,字节是我们应用的最小单位。

这里有同学可能会问道?

为什么等于2位十六进制

那是因为比如:

8个二进制1 组成1字节 1111 1111 每4个二进制位最大表示的数为 也就是说4个二进制位表示的范围可以在0到15 这刚好符合16进制的特性 因为16进制的范围大小也是0到15 这样看来 1字节8位二进制等于2位16进制 是顺理成章的事了!

这里要特别说明下:

以后的学习中最小的宽度单位就是字节也就是两位16进制

二、数据类型

在C语言中 有很多基本类型

void类型 整数类型 布尔型类型 浮点数类型 字符类型 从字面意思上 可以简单的理解下

然后咋门用这些类型 定义不同类型的变量

下面我们一一讲解

2.1.void 无类型

1.不可以定义变量

2.很多时候我们把void用在函数的返回值 和 函数参数的传递上

3.例如:

1
2
3
4
5
6
7
void main()

{

//函数体

}

这个main函数这样 就表示无返回值

2.2.整数类型

1.以下都是整数型只是数据宽度不一样而已也就是表示的数字范围大小不同

byte 1字节

short word 2字节

int dword long 4字节

long long qword 8字节

等等

同时有的类型是根据系统的不同而定所占字节大小 就比如32位系统 和64位 就有所不同

这里给大家演示下:

在讲解之前 需要了解下sizeof 这个关键字主要用于计算类型的所占字节大小

注意头文件:使用 word dword qword 类型 需要头文件 #include “windows.h”

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include<windows.h> 
void main() 
{   
  byte a=1;
  short b=2;   
  WORD c=3;   
  int d=3;   
  DWORD e=4;   
  long f=5;   
  longlong g=6;   
  QWORD h=7;   
  printf("byte 大小=%d\n", sizeof(byte));   
  printf("short 大小=%d\n", sizeof(short));   
  printf("WORD 大小=%d\n", sizeof(WORD));   
  printf("int 大小=%d\n", sizeof(int));   
  printf("DWORD 大小=%d\n", sizeof(DWORD));   
  printf("long 大小=%d\n", sizeof(long));   
  printf("longlong 大小=%d\n", sizeof(long long));   
  printf("QWORD 大小=%d\n", sizeof(QWORD));    
  system("pause");//暂停的意思 以免控制台消失 
}

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/eb725d3910ad43e13c019710312cda990f0a08ff.png@869w_294h_progressive.png

看了上面的代码 有的同学对printf 可能不太明白怎么使用 以后章节我们会细细道来不要担心

2.3.bool 布尔类型

0为false 可以用0来表示为“假”

非0为true 可以用1表示或者任意一个非0的值来表示为“真”

对于布尔类型来判断真假的话:0为false ,1为true

对于其他类型来判断真假的话:0为false ,非0为true

看看下面一小段代码

1
2
3
4
5
6
7
void main() 
{
  bool a = 123;   
  printf("a = %d\n",a);    
  printf("bool 大小=%d\n",sizeof(bool));  
  system("pause");//暂停的意思 以免控制台消失 
}

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/f8db3580cda715c98a9532d82d388cc489f29e34.png@636w_174h_progressive.png

编译后可以看到打印信息为:a不是等于123,因为是布尔类型,所以等于一个非0的布尔类型的1,也就是为真

三、浮点数类型

主要有2种类型

float 4字节

double 8字节

他们和整数不同 切记!

同时小数点的后面的精度上 也不同 明显double 要比float高

这里我们也看一小段代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void main() 
{
  float f1 = 123.0f;//这里注意浮点数要用到f结尾来赋值数据  
  printf("f1 = %f\n",f1);
  printf("float 大小=%d\n",sizeof(float));  
  double d1 = 123.0f;//这里注意浮点数要用到f结尾来赋值数据  
  printf("d1 = %f\n",d1);  
  printf("double 大小=%d\n",sizeof(double));   
  system("pause");//暂停的意思 以免控制台消失
}

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/db53abd9e878a573855a1fe1de2fc5925224093a.png@777w_222h_progressive-20211115170535599.png

可以看到大小不一样,这也是精度不同的原因

四、字符和字符串

4.1.字符

那么这里我们还需要讲解 字符的表示

什么是字符了 其实也就是符号 包含了 字母 符号 等等 比如a b c d 字符

1.首先字符的定义是在单引号’a’中 然后赋值给字符变量

1
2
3
4
5
6
7
void main() 
{    
  char c1='a';    
  printf("c1 = %c\n",c1);//%c表示 输出的值的类型是 字符类型    
  printf("char 大小=%d\n",sizeof(char));  
  system("pause");//暂停的意思 以免控制台消失           
} 

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/8327ad623407b5741e23496ce986540417b6ca8f.png@653w_209h_progressive-20211115170542578.png

可以看到 char类型占1字节

4.2.字符数组

接下来是字符串 比字符 从字面上讲 多了一个字 “串”

顾名思义就是 把多个字符串在一起就成了字符串

在这里 我们需要提前了解下数组的概念

其实也很好理解 数组也就是把多个数紧紧的挨在一起

数组

这里就简单的了解下

比如

1
int aa[5]={1,2,3,4,5};//这样就是 把1 2 3 4 5 5个数放在一个数组中 紧紧的挨在一起

字符数组

接下来 我们把int类型 换成 char 类型看看

1
char cc[5]={'H','e','a','r','t'};//注意要用单引号来表示字符类型哦

我们这里打印下看看

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
void main() 
{    
  char  cc[5]={'H','e','a','r','t'};//注意要用单引号来表示字符类型哦    
  printf("%c",cc[0]);//打印数组第一个元素从0索引开始 这里可能有的同学会不太明白 不要着急 后面会讲解 这里只是提及一下
  printf("%c",cc[1]);    
  printf("%c",cc[2]);  
  printf("%c",cc[3]);   
  printf("%c",cc[4]);  
  printf("                  char  cc[5] 大小=%d\n",sizeof(cc));    
  system("pause");//暂停的意思 以免控制台消失 
}

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/17719b8a5d7ad90211f45bd346a084abdb501673.png@749w_201h_progressive.png

4.3.字符串

看到打印信息 所以?

这里可能有的同学懂了

似乎明白了什么?

其实字符串和字符数组差不多一个意思 只是说字符串要注意的是 是以’\0’为结尾(也就是数值为0) 也就是说

把上面的代码需要替换一下

1
2
3
4
5
6
7
void main() 
{   
  char  cc[6]={'H','e','a','r','t','\0'};//注意表示字符串的话 要'\0'结尾哦   
  printf("cc = %s\n ",cc);//%s表示 输出的值的类型是 字符串类型   
  printf("          char  cc[6] 大小=%d\n",sizeof(cc));//其实也就是6个字符表示的一个字符串  
  system("pause");//暂停的意思 以免控制台消失 
}

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/2a76280dcc4ffe5012a5f67daab4997270f1aa9c.png@668w_197h_progressive.png

4.4.字符串和字符数组区别:

通过上面比较我们看到了字符数组不是字符串虽然在控制台上显示出来没有看出任何区别,其实字符串最后还会多一个\0字符的存在, 只是说这个\0是不会打印显示出来的,所以我们看到的都是heart

好了C语言的基本数据类型 我们就讲到这里 其他复杂的类型 后面会讲解到