适合初学者的C语言数据类型的讲解

 更新时间:2022年04月09日 14:54:57   作者:每天都要学一点哦  
在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

之前说过写代码是为了解决生活中的问题,比如购物。

假设我们要买一本书,它的价格是10.5,是个小数,也可以是一个整数10,它的书名是钢铁是怎样炼成的,是一组字符串,就像svli@gikvw这些,里面每个称为字符。

我们要去用c语言来去存储这些信息呢,在c语言里面为了能够描述这些类型。

就把小数抽象出来一个数据类型,叫浮点型

把整数抽象出来一个数据类型,叫整型(就是上一个博客里面的int)

把字符抽象出来一个数据类型,就叫字符

 10.5 -  小数  -  浮点型
 10   -  整数  -  整型
 A    -  字符  -  字符

那么c语言里面抽象出来哪些数据类型呢?

char          //字符数据类型
short         //短整型
int           //整型
long          //长整型
long long     //更长的整型
float         //单精度浮点数
double        //双精度浮点数
//浮点型  10.5
//整型    10
//字符    A

看了上面的数据类型,很容易看出来下面的关系:

请添加图片描述

为什么叫浮点数?

就像66.6和6.66*10,小数点是可以浮动的,所以叫浮点数

那么,为什么会有上面这么多的类型呢?我们就需要先回答一下下面这个问题:

每一种类型的大小是多少?

我们等一下用代码问一下他们各自的大小

先了解一下新的东西

#include<stdio.h>

int main()
{
printf("%d\n",100)//
return 0;}

这个%d指的是打印(输出)的格式,即整型,后面的100是返回值,即打印的是100,\n的意思就像enter,空行的意思,如图:

运行结果:

100

请添加图片描述

现在来解释一下\n的作用,这里用两组代码来对比一下:

第一组

#include<stdio.h>

int main()
{
printf("%d\n",100)//
printf("%d\n",100)
printf("%d\n",100)
return 0;}

运行的结果:

100

100

100

请添加图片描述

第二组

#include<stdio.h>

int main()
{
printf("%d",100)//
printf("%d",100)
printf("%d",100)
return 0;}

运行的结果:

100100100

请添加图片描述

可以看出,\n的作用就是空一行,就是平时enter的作用

接下来就是

#include<stdio.h>

int main()
{
    printf("%d ", sizeof(char));
	printf("%d ", sizeof(short));
	printf("%d ", sizeof(int));
	printf("%d ", sizeof(long));
	printf("%d ", sizeof(long long));
	printf("%d ", sizeof(float));
	printf("%d ", sizeof(double));
    return 0;
}

运行结果:

1 2 4 4 8 4 8

(那么这些数字的含义是什么?它们又是怎么来看出所占内存的大小呢?我们等一会儿就来解释。)

请添加图片描述

这里的sizeof()的作用就是返回数据类型中的char在内存中所占的大小,通俗点就是用它来告诉你char这个数据类型占多少内存

不过这里用%d不太合适,在一些的编译器里面会报警告,我们用%zu最合适,sizeof的返回值要用%zu来打印。

int main()
{
	printf("%zu\n", sizeof(char));
	printf("%zu\n", sizeof(short));
	printf("%zu\n", sizeof(int));
	printf("%zu\n", sizeof(long));
	printf("%zu\n", sizeof(long long));
	printf("%zu\n", sizeof(float));
	printf("%zu\n", sizeof(double));
	return 0;
}

结果跟上面那个图是一样的,运行结果是:

1

2

4

4

8

4

8

(我里面加了\n,所以是一排一排的)

接着我们来讲上面那些数字的含义,

你只看到了它们这些数字,但没有单位,其实它们都是有单位的,这里我们就来了解一下计算机的单位:

计算机的单位从大到小就是PB,TB,GB,MB,KB,byte。就像我们平时生活中用的流量,一般开通的套餐只到GB,所以GB,MB,KB这些我们都已经很熟悉了,下面就是各单位间的换算

 1Pb=1024Tb                   
 1Tb=1024Gb
 1Gb=1024Mb                  
 1Mb=1024kb
 1kb=1024byte(字节)  
 1byte=8bit(比特位)

看到这些,你可能对这些没有什么概念,我们再来进一步了解一下

我们都知道计算机使用的是二进制语言,而我们生活在十进制的世界,

来给一个空间| |,里面可以填1或0就是|1|或|0|,这就是一个bit,对应的就是灯亮和灯灭

那么一个字节byte呢?

|1| |0| |1| |0| |0| |1| |0| |1|占了8个空间,也就是8个bit

10100101 对应的十进制就是 165

一个字节能储存多大的数字呢?

11111111 对应的十进制就是255,即最多可以储存2^8-1这么大的数

我们可以感受到越到后面的单位大小越庞大

解释完计算机的单位,我们就来回到上面的1 2 4 4 8 4 8,它们的单位都是字节

char对应1字节,可以开辟一个能储存2^8-1的空间

short对应2字节,可以开辟一个能储存2^16-1的空间

int对应4字节,可以开辟一个能储存2^32-1的空间

long long对应8字节,可以开辟一个能储存2^64-1的空间

里面的float和double是来存储小数的,双精度浮点数比单精度浮点数精度要高一点,这个在以后的博客会更加深入的去讲解

但是我们看到int和long为什么都是4呢?

C语言规定,sizeof(long)>=sizeof(int)就行,但不会超过sizeof(long long)

那么我们回到前面提出的问题,为什么要规定这样的数据类型呢,答案是节省空间:

给你一个数2,你要把它存起来,你用了long long这个数据类型,开辟了能储存2^64-1的空间来放这个2,是不是有点大材小用了,用一个char就行了,提高空间的利用率

接下来我们来解释一下下面的代码,来引入下一个博客讲的变量和常量

#include<stdio.h>
int main()
{
int age=18;
double weight=16.5;
return 0;
}

int age=18;

向内存申请一个int大小的空间,来把18这个数据放在age这个变量里面,通俗一点就是,int要了一个房间,起名为age(随便起名),把18放到了里面。

double weight=16.5;

这个像上面一样,double是数据类型,weight是个变量,16.5是个小数

这些数据类型就是来定义变量的

到此这篇关于适合初学者的C语言数据类型的讲解的文章就介绍到这了,更多相关C语言 数据类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言文件操作大全

    C语言文件操作大全

    这篇文章主要介绍了C语言文件操作大全的相关资料,需要的朋友可以参考下
    2018-03-03
  • C语言实现一个简单的扫雷游戏

    C语言实现一个简单的扫雷游戏

    扫雷是电脑上很经典的游戏,特意去网上玩了一会,几次调试之后,发现这个比三子棋要复杂一些,尤其是空白展开算法上和堵截玩家有的一拼,与实际游戏差别较大,不能使用光标,下面来详解每一步分析
    2021-10-10
  • C语言指针与引用的区别以及引用的三种用法案例详解

    C语言指针与引用的区别以及引用的三种用法案例详解

    这篇文章主要介绍了C语言指针与引用的区别以及引用的三种用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • C++在成员函数中使用STL的find_if函数实例

    C++在成员函数中使用STL的find_if函数实例

    这篇文章主要介绍了C++在成员函数中使用STL的find_if函数实例,包括了STL中find_if函数的具体用法及相关的完整实例,非常具有参考借鉴价值,需要的朋友可以参考下
    2014-10-10
  • C++ opencv实现的把蓝底照片转化为白底照片功能完整示例

    C++ opencv实现的把蓝底照片转化为白底照片功能完整示例

    这篇文章主要介绍了C++ opencv实现的把蓝底照片转化为白底照片功能,结合完整实例形式详细分析了C++使用opencv模块进行图片转换操作的相关实现技巧,需要的朋友可以参考下
    2019-12-12
  • C++实现并行计算的两种方式

    C++实现并行计算的两种方式

    本文介绍了使用C++实现并行计算的两种方式,包括OpenMP和MPI,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • 利用C语言编写“剪刀石头布”小游戏

    利用C语言编写“剪刀石头布”小游戏

    这篇文章主要给大家介绍了关于如何利用C语言编写“剪刀石头布”小游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • C语言中变量与其内存地址对应的入门知识简单讲解

    C语言中变量与其内存地址对应的入门知识简单讲解

    这篇文章主要介绍了C语言中变量与其内存地址对应的入门知识简单讲解,同时这也是掌握指针部分知识的基础,需要的朋友可以参考下
    2015-12-12
  • C++ 微信多开的实现

    C++ 微信多开的实现

    本文主要介绍了C++ 微信多开的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Windows进程崩溃问题的定位方法

    Windows进程崩溃问题的定位方法

    这篇文章主要介绍了Windows进程崩溃问题的定位方法,本文使用nstd工具进行进程崩溃时内存和堆栈转储的方法查明问题所在,需要的朋友可以参考下
    2015-04-04

最新评论