C语言的数据类型及其存储方式(上)

简介: C语言的数据类型及其存储方式

一,数据类型的介绍

       1.常见的数据类型

数据类型 名称 字节大小
char 字符数据类型 1
short 短整型 2
int 整型 4
long 长整形 4/8
数据类型 名称 字节大小
char 字符数据类型 1
short 短整型 2
int 整型 4
long 长整形 4/8
long long 长长整型 8
float 单精度浮点型 4
doulb

双精度浮点型

8

      2.整型家族


       整型分为有符号整型和无符号整型:

数据类型 有符号整型 无符号整型
char signed char unsigned char
short signed short [ int ] unsigned short [ int ]
int signed int unsigned int

long

signed long [ int ]

unsigned long [ int ]

long long signed long long [ int ] unsigned long long [ int ]

其实对于char类型来说,虽然他是字符型,但是存储到内存中的是其对应的ASCll值,而ASCll是数字,所以char类型也是整型家族的一员

      我们正常情况下的类型声明都是默认为有符号整型,所以都会把signed给省略掉。

      3.浮点型家族

数据类型
float
double
long double---------在新的语法规则中引入的,了解一下即可

 4.构造类型

                    构造类型又称 ” 自定义类型 “:

数组类型 int [ ] ,char [ ] 等
结构体类型 struct
枚举类型 enum
联合类型 union

   5.指针类型

整形指针 int *pi
字符指针 char *pc
单精度浮点型指针 float *pf
空指针 void *pv
结构体的指针 struct stuendt *p 等

除此之外还有:二级指针,三级指针,数组指针,函数指针等

  6.空类型

void 表示空类型(无类型)
通常应用于函数的返回类型,函数的参数,指针类型
比如 :void* p ,void test test ( )......

二,整型在内存中的存储

       我们知道,一个边路的创建是要在内存中开辟空间的,空间的大小是根据不同的类型而决的。

       接下来我们谈谈数据在所开辟内存中到底是如何存储的?

比如:

int a = 10 ;

int b = -10 ;

     我们列了两个整型变量来观察,根据类型的不同,变量会向系统申请不同内存大小的空间

       上述,变量向系统申请了4个字节的空间用来存储,那究竟是如何存储的呢?我们且来分析一下:

       先观察变量 a 在内存中的存储:


解释:显而易见地址的右边是变量a的地址,红色字体是变量a在内存中的储存的内容

          每两个数为一个字节,共四个字节

           地址空间所存储的值是以16进制的形式进行存储的

再来观察一下变量b在内存中的存储:

解释:显而易见,红色字体是变量b在内存中的储存的内容

           肯定大家都发现了此内容超级大并且顺序颠倒!这是为什么呢?        

           欲知后事如何,且听下回分解!

1.原码,反码和补码

计算机中的整数有三种二进制表示方法,即原码,反码和补码

三种表示方法均有符号位数值位两部分,符号位都是用0来表示 " 正 ",用1来表示 " 负 "

正数的原,反,补码都相同

负整数的三种表示方法格不相同


原码:
直接将数值按照正负数的形式翻译成二进制就可以得到原码
反码:
将原码的符号位不变,其他位依次按位取反就可以得到反码
补码:
反码+1就可以得到补码

对于整型来说:数据存放在内存中的是补码--------这也是为什么上述变量 " b " 存放在内存   中   如此巨大的原因!

2,大小端字节序介绍

大端:

大端字节序(存储)模式,是指数据的地位字节处的内容保存在内存的高地址中,而数据的高位字节处的内容,保存在内存的低地址中
小端:
小端字节序(存储)模式,是指数据的地位字节处的内容保存在内存的低地址中,而数据的高位字节处的内容,保存在内存的高地址中

由此我们来分析变量 " a " 和 " b " 的情况--------

image.png

进制数:

                 左边为高位,右边为地位

在内存中:

                 左边为低地址,右边为高地址

       我们使用的环境一般情况下默认为小端存储模式,所以存在内存才会出现倒着存的现象!



目录
相关文章
|
28天前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
36 1
|
1月前
|
C语言
3.4 C语言基本数据类型2
在C语言中,声明一个整型(int)变量时,需先写入'int'关键字,后跟变量名并以分号结尾。若同时声明多个变量,可在'int'后用逗号分隔列出所有变量名。例如,`int erns;` 或 `int hogs, cows, goats;` 都是合法声明。变量声明后需通过赋值语句如 `cows = 112;` 或使用函数如 `scanf()` 来初始化其值。
44 10
|
1月前
|
存储 程序员 C语言
3.1 C语言基本数据类型
在C语言中,整数类型如`int`类型是很有用的,它属于有符号整型,意味着该类型的值必须是整数,并且可以是正整数、负整数或者零。`int`类型的数值范围依据计算机系统有所不同,通常取决于系统的位宽。例如,在早期16位的IBM PC兼容机上,`int`类型使用16位存储,取值范围为-32768至32767;而在当前32位系统中,使用32位存储,拥有更宽泛的取值范围。随着64位处理器的普及,`int`类型能够存储的整数范围将进一步扩大。根据ISO C标准,`int`类型的最小取值范围被规定为-32768到32767。系统通常会利用一个特殊的位来表示整数的正负。
34 10
|
1月前
|
C语言
3.1C语言基本数据类型
在C语言中,初始化变量是指为变量设定初始值,通常在声明时直接完成,例如 `int cows=32;`。应注意避免在同一语句中混合初始化与未初始化的变量,如 `int dogs, cats=94;` 这样的写法容易引起误解。此外,整型常量如21、32等在C语言中被视为int类型,但非常大的整数则不然,且带有小数点或指数的数值不属于整型常量。
27 9
|
1月前
|
存储 C语言
深入C语言内存:数据在内存中的存储
深入C语言内存:数据在内存中的存储
|
1月前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型
|
1月前
|
存储 编译器 程序员
C语言数据类型详解
C语言数据类型详解
|
1月前
|
存储 C语言
C语言中的浮点数存储:深入探讨
C语言中的浮点数存储:深入探讨
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3
|
7天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
23 6