数据在内存中的储存

本文探讨了C语言中的数据类型分类,如整形(有符号与无符号)、浮点型的构造和存储规则,以及字节序、数据截断和整型提升现象。通过实例演示了字符、整数和浮点数在内存中的存储细节,包括原码、反码和补码的概念,以及IEEE 754标准对浮点数的特殊处理。
摘要由CSDN通过智能技术生成

数据的储存

数据类型

常见的数据类型

常见的数据类型 字节
char 字符数据类型 1
short 短整型 2
int 整形 4
long 长整型 4
long long 更长的整形 8
float 浮点型 4
double 双精度浮点型 8

注意:

  • C语言里面没有字符串类型

  • 关于int和long的大小:C语言只是规定了:sizeof(long)>=sizeof(int)

  • 布尔类型(_Bool)(C99引入)专门用来表示真假,但是在C语言中不需要布尔类型也可以表示真假

#include<stdbool.h>
int main()
{
   
    _Bool flag = false;
    _Bool flag2 = true;
    if(flag)
    {
   
        printf("haha\n");
	}
    if(flag2)
    {
   
        printf("hehe\n");
	}
return 0;
}//只打印了hehe

类型的基本归类

整形

char也属于整形(每一个字符在储存的时候是储存他所对应的ascll值,ascll是整数)

char unsigned char signed char
short unsigned short signed short
int unsigned int signed int
long unsigned long signed long
有符号数和无符号数
有符号数
int main()
{
   
	int a = 10;
    int a = -10;
	return 0;
}//a是一个有符号数,它可以储存正负整数

//int ===> signed int
//short ===> signed short
//long ===> signed long

无符号数

有一些变量只有正数由意义,例如年龄,价格。定义这些变量的时候就可以用无符号数定义 ,无符号数只能存储正数。

int main()
{
   
    unsigned int a = 10;
    //无符号变量只能储存正数
    a = -10;
    //即使这里输入了一个负数,它也会把这个负数转化成一个正数(不是简单的去掉符号,这是关于二进制的计算)
    return 0;
}
是否char 等于signed char呢?

答案:取决于编译器

  • 我们会发现这样一件事:
    int 就是 signed int
    short 就是 signed short
    long 就是 signed long
  • char 等于signed char还是unsigned char 取决于编译器,不同的编译器可能是不同的结果,常见的编译器下是等于signed char
对于有符号数字和无符号数字的打印

打印无符号数应该用%u

%u和%d打印的解读方式不同:
使用%d 时,会认为这是一个有符号数,打印的时候会认为二进制中第一位是符号位;
使用

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值