数据在内存中的存储相关练习
在寒假,我已经深度剖析过数据在内存中是怎么样存储的,以及有关的数据基本类型介绍和归类。这篇文章目的就是复习和巩固这些知识点。
练习一:分析下列代码,最后的输出结果是什么?(知识点:截断,整形提升,无符号类型和有符号类型区别)
#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;
}
练习二:分析下列代码,最后的输出结果是什么?(知识点:截断,无符号打印方式,整形提升)
#include <stdio.h>
int main()
{
char a = -128;
printf("%u\n",a);
return 0;
}
练习三:分析下列代码,最后的输出结果是什么?(知识点:截断,无符号打印方式)
#include <stdio.h>
int main()
{
char a = 128;
printf("%u\n",a);
return 0;
}
答案详解:
练习一:
a=-1
b=-1
c=255
题目分析:
练习二:
4,294,967,168
题目分析:
练习三:
4,294,967,168
答案分析:
第二部分:
练习四:分析下列代码,最后的输出结果是什么?(知识点:算术转换 )
int main()
{
int i= -20;
unsigned int j = 10;
printf("%d\n", i+j);
return 0;
}
练习五:分析下列代码,最后的输出结果是什么?(知识点:无符号类型)
int main()
{
unsigned int i;
for(i = 9; i >= 0; i--)
{
printf("%u\n",i);
}
return 0;
}
练习六:分析下列代码,最后的输出结果是什么?(知识点:signed char取值范围,strlen函数)
int main()
{
char a[1000];
int i;
for(i=0; i<1000; i++)
{
a[i] = -1-i;
}
printf("%d",strlen(a));
return 0;
}
练习七:分析下列代码,最后的输出结果是什么?(知识点:unsigned char取值范围)
#include <stdio.h>
unsigned char i = 0;
int main()
{
for(i = 0;i<=255;i++)
{
printf("hello world\n");
}
return 0;
}
答案:
练习四:
i+j=-10
答案分析:
练习五:
死循环
练习六:
strlen(a)=255
练习7:
死循环
好啦,有关数据在内存当中的一些练习暂时到这里啦,如果还有不清楚的地方,欢迎和我讨论,若有错误之处,请点出,我会及时加以修正!
.(img-93xrqzjy-1646233693129)]
练习7:
死循环
好啦,有关数据在内存当中的一些练习暂时到这里啦,如果还有不清楚的地方,欢迎和我讨论,若有错误之处,请点出,我会及时加以修正!