C语言-入门-基础-语法-数据类型(四)

x33g5p2x  于2022-07-04 转载在 其他  
字(2.6k)|赞(0)|评价(0)|浏览(384)

什么是数据?

生活中无时无刻都在跟数据打交道

  • 例如:人的体重、身高、收入、性别等数据等
  • 在我们使用计算机的过程中,也会接触到各种各样的数据
  • 例如: 文档数据、图片数据、视频数据等

数据分类

静态的数据

  • 静态数据是指一些永久性的数据,一般存储在硬盘中。硬盘的存储空间一般都比较大,现在普通计算机的硬盘都有500G左右,因此硬盘中可以存放一些比较大的文件
  • 存储的时长:计算机关闭之后再开启,这些数据依旧还在,只要你不主动删掉或者硬盘没坏,这些数据永远都在
  • 哪些是静态数据:静态数据一般是以文件的形式存储在硬盘上,比如文档、照片、视频等。

动态的数据

  • 动态数据指在程序运行过程中,动态产生的临时数据,一般存储在内存中。内存的存储空间一般都比较小,现在普通计算机的内存只有8G左右,因此要谨慎使用内存,不要占用太多的内
    存空间
  • 存储的时长:计算机关闭之后,这些临时数据就会被清除
  • 哪些是动态数据:当运行某个程序(软件)时,整个程序就会被加载到内存中,在程序运行过程中,会产生各种各样的临时数据,这些临时数据都是存储在内存中的。当程序停止运行或者计算机被强制关闭时,这个程序产生的所有临时数据都会被清除。

既然硬盘的存储空间这么大,为何不把所有的应用程序加载到硬盘中去执行呢?

  • 主要原因就是内存的访问速度比硬盘快N倍

  • 静态数据和动态数据的相互转换 ,也就是从磁盘加载到内存

  • 动态数据和静态数据的相互转换,也就是从内存保存到磁盘

作为程序员, 我们最关心的是内存中的动态数据,因为我们写的程序就是在内存中运行的, 程序在运行过程中会产生各种各样的临时数据,为了方便数据的运算和操作, C语言对这些数据进行了分类, 提供了丰富的数据类型

数据类型介绍

C语言的数据类型有:基本类型、空类型、构造类型和指针类型。其中构造类型中包括共用体、数组、结构体三种类型。基本类型中还包括整型、浮点型、字符型和枚举型四种类型。

在C语言中,承载一系列信息的数字或中字符都属于数据类型,计算机不能直接识别不同的类型,所以在使用变量时需要在声明语句中指定其数据类型。C语言的数据类型,通俗的理解就是将不同的物品放在不同的盒子中,比如小数存放在浮点型、整数存放在整型、字符存放在字符型等等,在编写C语言时需要根据存放数据的不同,定义不同的类型变量。

例如:int整型一般是分配4个字节存储空间,double双精度浮点型分配8个字节的存储空间;变量的数据类型同时决定着该变量能取哪些值和进行哪些运算。如整数类型只能取整数值,小数类型可以表示小数,整数和小数可以进行加减乘除数学运算。

基本数据类型

C语言种最基本数据类型是算术类型,包括整数类型和浮点数类型。字符类型、枚举类型本质也是整数类型;整数类型细分有符号和无符号整数、长整数和短整数;不同整数类型区别是存储长度不一样、取值范围大小不一样;浮点数类型比较简单,都是有符号的,分为单精度和双精度浮点数。

整数类型以及声明关键字包括:

  • 字符类型:char(至于是有符号或无符号由编译器实现自定义)
  • 有符号字符类型:signed char
  • 无符号字符类型:unsigned char
  • 有符号短整型:short, signed short, short int, signed short int
  • 无符号短整型:unsigned short, unsigned short int
  • 有符号整型:int, signed, signed int
  • 无符号整型:unsigned, unsigned int
  • 有符号长整型:long, signed long,long int,signed long int
  • 无符号长整型:unsigned long, unsigned long int

浮点类型声明包括:

  • 单精度浮点型:float
  • 双精度浮点型:double
  • 长双精度浮点型:long double

常用基本数据类型大小

char 1字节,int 4字节, long 8字节,float 4字节,double 8字节;每种类型存储空间大小,所占字节数,和计算机位数有关,不同机器数据类型大小不一样,可以通过 sizeof() 关键字进行每种类型大小的计算,确定存储空间和取值范围。

获取当前机器的变量大小

#include<stdio.h>
int main()
{
        printf("int = %d\n",sizeof(int));
        printf("short = %d\n",sizeof(short));
        printf("long int = %d\n",sizeof(long int));
        printf("long long int = %d\n",sizeof(long long int));
        printf("char = %d\n",sizeof(char));
        printf("_Bool = %d\n",sizeof(_Bool));
        printf("float = %d\n",sizeof(float));
        printf("double = %d\n",sizeof(double));
        printf("long double = %d\n",sizeof(long double));
}

32位编译器和64位编译器区别

32位编译器

  • char :1个字节
  • char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节)
  • short int : 2个字节
  • int: 4个字节
  • unsigned int : 4个字节
  • float: 4个字节
  • double: 8个字节
  • long: 4个字节
  • long long: 8个字节
  • unsigned long: 4个字节

64位编译器 (目前基本都是64的了)

  • char :1个字节
  • char*(即指针变量): 8个字节
  • short int : 2个字节
  • int: 4个字节
  • unsigned int : 4个字节
  • float: 4个字节
  • double: 8个字节
  • long: 8个字节
  • long long: 8个字节
  • unsigned long: 8个字节

点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复感谢,配合,希望我的努力对你有帮助^_^

免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我。

相关文章