C语言----数据的存储

Posted 4nc414g0n

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言----数据的存储相关的知识,希望对你有一定的参考价值。

数据的存储

数据类型

  • 整形类型
    char:0-127(注意:char未规定为是signed char还是unsigned char,但大多数编译器为signed)
    signed char: -128-127
    unsigned char: 0-255
    short int: -32768-32767
    unsigned short int: 0-65535
    int: -32768-32767(注意:int为 signed int)
    unsigned int: 0-65535
    long int: -2147483648-2147483647
    unsigned long int: 0-4294967295
  • 浮点型类型
  • 构造类型-自定义类型
    数组:int arr[10]的类型为int [10] int arr[5]的类型为int[5]
    struct enum 联合体
  • 指针类型
  • 空类型
    void函数返回类型:void test()
    函数参数:void test(void)
    指针:void* p

大小端存储

int a = 0x11223344;
  • 大端存储:把数据的低位字节序的内容存放在高地址处,高位字节序的内容存放在低地址处
    低 11 22 33 44 高
  • 小端存储:把数据的低位字节序的内容存放在低地址处,高位字节序的内容存放在高地址处
    低 44 33 22 11 高

代码

//判断当前机器大小端存储
//利用char*取&a一个字节内容
int main()
{
	int a=1;
	char*p=(char*)&a;
	if(*p==1)
	{
		printf("小端\\n");
	}
	else
	{
		printf("大端\\n");
	}
	return 0;
}

1.整型类型

  1. 例一
int main()
{
	char a=-128;
	printf("%u\\n",a);
	return 0;
}
//-128二进制100000...100000000
//-128补码  111111...100000000
//char截断:10000000
//提升      111111...100000000
//%u无符号 原码等于补码
//结果打印4294967168
  1. 例二
int main()
{
	char a[1000];
	for(i=0;i<=1000;i++)
	{
		a[i]=-1-i;
	}
	printf("%d\\n",strlen(a));
	return 0;
}
//char的范围为-128-127
//-1开始减到-128时再二进制减一就回到127...以此循环
//而strlen计数是找'\\0'而'\\0'的ASCII码为0
//虽然会有栈溢出,但结果255毋庸置疑

以上是关于C语言----数据的存储的主要内容,如果未能解决你的问题,请参考以下文章

C语言杂谈存储类别

C语言进阶数据的存储

C程序存储结构

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

c语言中字符型数据在内存中的存储形式是?