C语言进阶学习数据在内存中的存储

C语言进阶学习数据在内存中的存储_第1张图片C语言进阶学习数据在内存中的存储_第2张图片C语言进阶学习数据在内存中的存储_第3张图片

#include

int main()
{
	char c1 = 'w';//char到底是signed还是unsigned char是不确定的,取决于编译器的实现
	signed char c2 = 'w';
	unsigned char c2 = 't';

	short int a = 10;//等价与short
	short b = 20;//short 是signed short
	signed short c = 30;
	unsigned short d = 40;
	return 0;
}

int main()
{
	int arr[10];//10个整型数组
	char ch1[5];//5个字符数组
	char ch2[4];//与ch1不同的类型
	return 0;
}

C语言进阶学习数据在内存中的存储_第4张图片
C语言进阶学习数据在内存中的存储_第5张图片
C语言进阶学习数据在内存中的存储_第6张图片

int main()
{
	int a = 3;
	//原码反码补码:00000000 00000000 00000000 00000011
	//                   00       00       00       03
	int b = -1;
	//原码:10000000 00000000 00000000 00000001
	//反码:11111111 11111111 11111111 11111110
	//补码:11111111 11111111 11111111 11111111
	//     FFFFFFFF

	return 0;
}
int main()
{
	int c = 1 - 1;
	//CPU加法器
	//1+(-1)
	//00000000 00000000 00000000 00000001
	//10000000 00000000 00000000 00000001
	//10000000 00000000 00000000 00000010 - 原码计算 - err

	//00000000 00000000 00000000 00000001
	//11111111 11111111 11111111 11111111
   //100000000 00000000 00000000 00000000 -补码计算 - 0
	//因此计算存储数据都是补码
	return 0;
}

C语言进阶学习数据在内存中的存储_第7张图片
C语言进阶学习数据在内存中的存储_第8张图片
C语言进阶学习数据在内存中的存储_第9张图片C语言进阶学习数据在内存中的存储_第10张图片
C语言进阶学习数据在内存中的存储_第11张图片

在这里插入图片描述

#include
//测试编译器是小端还是大端
int main()
{
	int a = 1;//00 00 00 01
	//低       高
	//大端
	//00 00 00 01
	//小端
	//01 00 00 00
	char* p = (char*)&a;
	if (*p == 1)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}

	return 0;
}


//封装函数

int check_sys()
{
	int a = 1;
	return (*(char*)&a);

}

int main()
{
	int ret = check_sys();
	if (1 == ret)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}
	return 0;
}

输出结果:

C语言进阶学习数据在内存中的存储_第12张图片

#include 
int main()
{
	char a = 128;
	printf("%u\n", a);//%u 打印无符号整数
	return 0;
}

输出结果:232 -27

C语言进阶学习数据在内存中的存储_第13张图片

#include
#include
//死循环
int main()
{
	unsigned int i;//i>=0
	for (i = 9; i >= 0; i--)//满足条件死循环打印
	{
		printf("%u\n", i);
		Sleep(1000);
	}
	return 0;
}
int main()
{
	char a[1000];
	int i;
	for (i = 0; i<1000; i++)
	{
		a[i] = -1 - i;
	}
	printf("%d", strlen(a));
	return 0;
}

输出结果:

C语言进阶学习数据在内存中的存储_第14张图片
C语言进阶学习数据在内存中的存储_第15张图片
C语言进阶学习数据在内存中的存储_第16张图片

unsigned char i = 0;//i<=255
int main()
{
	for (i = 0; i <= 255; i++)//一直满足条件死循环
	{
		printf("hello world\n");
	}
	return 0;
}

C语言进阶学习数据在内存中的存储_第17张图片
在这里插入图片描述
limits.h

C语言进阶学习数据在内存中的存储_第18张图片
C语言进阶学习数据在内存中的存储_第19张图片
C语言进阶学习数据在内存中的存储_第20张图片
在这里插入图片描述
C语言进阶学习数据在内存中的存储_第21张图片
C语言进阶学习数据在内存中的存储_第22张图片
C语言进阶学习数据在内存中的存储_第23张图片
C语言进阶学习数据在内存中的存储_第24张图片

int main()
{
	int n = 9;
	//00000000 00000000 00000000 00001001
	float *pFloat = (float *)&n;
	printf("n的值为:%d\n", n);//9
	printf("*pFloat的值为:%f\n", *pFloat);
	//0 00000000 00000000000000000001001 
	//E为-126 (-1)^0*0.00000000000000000001001
	//无穷小
	*pFloat = 9.0;
	//9.0
	//1001.0
	//1.001*2^3
	//0 10000010 00100000000000000000000
	printf("num的值为:%d\n", n);//很大的值
	printf("*pFloat的值为:%f\n", *pFloat);//9.0
	return 0;
}

输出结果:

C语言进阶学习数据在内存中的存储_第25张图片

你可能感兴趣的:(C语言,c语言)