1.基本数据类型
常见的:
char short int long long long float double
意义:每个类型开辟的空间大小不同,决定了使用范围的不同
在这里我们重点了解一下 signed (有符号的) unsigned (无符号的)
顾名思义,这两个是前缀给内置类型的;
举个栗子
signed char 表示:这个char就是有符号的字符
ugsigned char 表示: 这个char就是无符号的字符
(最后有惊喜!!!)
当然signed和unsigned不止能修饰char ,下面介绍整形家族
整形家族 :
char short int long
2. 整形在空间里的存储
整数在空间中的存储有三种,分别是 原码,反码,补码
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位
在计算机中整形一般都已补码的形式存储
why???
同时计算机计算减法不是正常的相减而是,换种方式
举个栗子
2-3 ,在计算机就是 2+(-3)
下面给大家引入一个新的知识点,重点哦!
是不是不容易看懂,接下来有请代码
在vs2020编译器中,为小端(存储)模式,并且为了方便观看,内存中的二进制转化为十六进制了
下面这个代码可以让你知道你的当前机器是大端模式还是小端模式
#include <stdio.h>
int check_sys()
{
int i = 1;
return (*(char *)&i);
}
int main()
{
int ret = check_sys();
if(ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
首先,定义一个i,赋值给1;我们&a得到,0x00000001
如果是小端储存的,就是 01 00 00 00;因为int在内存中是4个字节,所以01为一个字节;
反之,就是大端储存, 00 00 00 01
最后一个小测试
我们看下面这列代码
#include <stdio.h>
int main()
{
char a= -1;
signed char b=-1;
unsigned char c=-1;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
小提示:signed 有符号整形提升按符号位提升, unsigned 无符号整型提升补0
请读者猜猜看 a,b,c 分别是多少?
答案放在结尾,顺带一份晚霞送给正在努力改变自己的各位
猜对了嘛?