适合初学者的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语言 数据类型内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言 数据类型详细介绍

    C 数据类型 在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统.变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式. C 中的类型可分为以下几种: 序号 类型与描述 1 基本类型: 它们是算术类型,包括两种类型:整数类型和浮点类型. 2 枚举类型: 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量. 3 void 类型: 类型说明符 void 表明没有可用的值. 4 派生类型: 它们包括:指针类型.数组类型.结构类型.共用体类型和函数类型.

  • 详解C语言的基本数据类型

    目录 1.C语言基本数据类型 2.计算机中的单位 3.各数据类型的大小及字取值大小 总结 1.C语言基本数据类型 2.计算机中的单位 3.各数据类型的大小及字取值大小 对于short int .int .long int.long long int,虽然都为整形数据类型,但是在存储像年龄.特定的尺寸及尺寸等数值比较小的整型数据时,没必要用long long int 甚至是int去存储该类数据,因为这样会浪费计算及的存储的内存,但是当需要存储相当大的数据时,就需要用到long longint这样的

  • C语言数据类型转换实例代码

    数据类型转换就是将数据(变量.表达式的结果)从一种类型转换到另一种类型.例如,为了保存小数你可以将int类型的变量转换为double类型. 数据类型转换的一般格式为: (type_name) expression type_name为要转换到的数据类型,expression为表达式.例如: (float) a; //把a转换为实型 (int)(x+y); //把x+y的结果转换为整型 (float) 100; //将一个常量转换为实型 [示例]将整数转换为浮点数: #include <stdio

  • C语言菜鸟基础教程之数据类型

    C语言的数据类型有整型.浮点型(就是小数).字符.字符串.数组.结构体等.刚开始学的时候,不要一下子学太多.先学最基本的整型.浮点型和字符. 对于学习程序来说,最重要的是动手操作. 先编写程序: #include <stdio.h> int main() { int a = 1; printf("a = %d\n", a); float b = 2.2; printf("b = %f\n", b); char c = 'A'; printf("

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

    之前说过写代码是为了解决生活中的问题,比如购物. 假设我们要买一本书,它的价格是10.5,是个小数,也可以是一个整数10,它的书名是钢铁是怎样炼成的,是一组字符串,就像svli@gikvw这些,里面每个称为字符. 我们要去用c语言来去存储这些信息呢,在c语言里面为了能够描述这些类型. 就把小数抽象出来一个数据类型,叫浮点型 把整数抽象出来一个数据类型,叫整型(就是上一个博客里面的int) 把字符抽象出来一个数据类型,就叫字符 10.5 -  小数  -  浮点型 10   -  整数  -  整

  • 适合初学者的C语言常量类型的讲解

    目录 常量的定义 常量的分类 字面常量 const修饰的常变量 #define 定义的标识符常量 枚举常量 生活中有一些是可变的量(比如你的年龄,身高,体重,对象) 还有一些不变的量(比如圆周率,性别,身份证号码)[哎,这里你说性别可变啊,我们只能笑一下,哈哈] 常量的定义 常量就是一个不变的量(比如圆周率,性别,身份证号码) C语言中的常量和变量的定义的形式有所差异. 常量的分类 C语言中的常量分为以下以下几种: 1.字面常量 2.const 修饰的常变量 3.#define 定义的标识符常量

  • 适合初学者的C语言字符串讲解

    这一篇博客我们来了解一下字符串,看下面这个我们熟知的也是最先学习的代码 "Hello world!" 这一堆的字母就是字符串字面值,简称字符串,每一个字母都是一个字符,字符串需要用" "双引号来引起,字符需要用’ '单引号来引起,就像下面 "Hello world!"  //字符串'a'  //字符'!'  //字符 字符串也算常量,上面三条都算字面常量,之前的讲常量的时候就举过这种例子 那么字符串有什么用呢? 假设我们要把下面的字符串存起来,那

  • 适合初学者的C语言转义字符讲解

    什么是转义字符 今天我们来了解一下转义字符,转义字符顾名思义就是转变意思. 现在了解一下这些字符: 转义字符      释义    \?        在书写连续多个问号时使用,防止他们被解析成三字母词    \'        用于表示字符常量'    \“        用于表示一个字符串内部的双引号    \\        用于表示一个反斜杠,防止它被解释为一个转义序列符.    \a        警告字符,蜂鸣    \b        退格符    \f        进纸符   

  • python和c语言哪个更适合初学者

    C语言是编译型语言,经过编译后,生成机器码,然后再运行,执行速度快,不能跨平台,一般用于操作系统,驱动等底层开发. Python是编译型还是解释型这个界限并不明显,但大致上可以理解为解释型语言,执行速度慢,由于Python虚拟机,Python是可以跨平台的,Python高度集成适合于软件的快速开发. C语言中需要事先定义变量类型,以int类型为例,当定义一个int型变量后,就会在内存中开辟4个字节,再来进行初始化,由于长度是指定的,在运算过程中需要考虑,溢出,精度等问题. Python不需要事先

  • R语言数据类型和对象深入讲解

    以上数据类型均为原子向量. 单引号和双引号不做区分. R语言中TRUE和FALSE 可以简化为T和F 多元素向量的生成方式 方式 1:使用c()函数 ,这个是最常见的 c(combine) 如果基本类型混合的话,会强制类型转换 方式2: 使用seq()函数 (创建等差数列) 方式3:创建等差序列 事先知道向量的类型和长度,可以 产生随机数列 有放回抽样 (这个可以用np.random.choice()实现) 取向量的元素,并对其操作 (下表从1开始) 根据变量的不同,R语言数据对象可以分为 到此

  • 适合初学者练习的C语言实现三子棋小游戏

    目录 一.写代码前明确下棋时的步骤与顺序 二 根据初步的主函数完成想要的代码 1.写一个函数来初始化棋盘 2.打印棋盘 3.玩家落子 4.电脑落子 5.判断胜负 三.三子棋实现代码 用简单的C语言来实现小时候玩的三子棋游戏,下面是人机对战,当然这个代码的电脑对手是人工智障而不是人工智能 一.写代码前明确下棋时的步骤与顺序 1.创建一个3*3的棋盘. 2.将上面创建的棋盘中每个格初始化成' '状态. 3.打印出初始化完成的棋盘 4.玩家落子 5.电脑落子 6.判断胜负 写代码之前梳理好大概的思路,

  • C语言超详细讲解数据结构中双向带头循环链表

    目录 一.概念 二.必备工作 2.1.创建双向链表结构 2.2.初始化链表 2.3.动态申请节点 2.4.打印链表 2.5.销毁链表 三.主要功能 3.1.在pos节点前插入数据 尾插 头插 3.2.删除pos处节点数据 尾删 头删 3.3.查找数据 四.总代码 List.h 文件 List.c 文件 Test.c 文件 五.拓展 一.概念 前文我们已经学习了单向链表,并通过oj题目深入了解了带头节点的链表以及带环链表,来画张图总体回顾下: 在我们学习的链表中,其实总共有8种,都是单双向和带不带

  • C语言超详细讲解指针的概念与使用

    目录 一.指针与一维数组 1. 指针与数组基础 2. 指针与数组 3. 一个思考 二.指针与字符串 三.指针和二维数组 1. 指针数组与数组指针 2. 指针数组 3. 数组指针 一.指针与一维数组 1. 指针与数组基础 先说明几点干货: 1. 数组是变量的集合,并且数组中的多个变量在内存空间上是连续存储的. 2. 数组名是数组的入口地址,同时也是首元素的地址,数组名是一个地址常量,不能更改. 3. 数组的指针是指数组在内存中的起始地址,数组元素的地址是指数组元素在内存中的其实地址. 对于第一点数

随机推荐