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

C语言|C语言进阶学习数据在内存中的存储
文章图片
C语言|C语言进阶学习数据在内存中的存储
文章图片
C语言|C语言进阶学习数据在内存中的存储
文章图片

#includeint 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语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

int main() { int a = 3; //原码反码补码:00000000 00000000 00000000 00000011 //00000003 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语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片
C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

#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语言|C语言进阶学习数据在内存中的存储
文章图片

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

输出结果:232 -27
C语言|C语言进阶学习数据在内存中的存储
文章图片

#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语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

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

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

limits.h
C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

C语言|C语言进阶学习数据在内存中的存储
文章图片

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语言|C语言进阶学习数据在内存中的存储】C语言|C语言进阶学习数据在内存中的存储
文章图片

    推荐阅读