数据的存储练习题
Posted 任我驰骋°
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据的存储练习题相关的知识,希望对你有一定的参考价值。
练习一
1.
//输出什么?
#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;
}
输出结果为 -1 -1 255,因为无符号数-1在内存中的存储为补码1111 1111.
练习二
2.
#include <stdio.h>
int main()
{
char a = -128; // 在内存中的存储为1000 0000
printf("%u\\n",a);
return 0;
}
正常来说,首位应是符号位。经规定为1000 0000为-128,此时为无符号整数输出前面都补1,输出为4294967168。
练习三
3.
#include <stdio.h>
int main()
{
char a = 128;
printf("%u\\n",a);
return 0;
}
同练习二,char类型的128越界存储为1000 0000,以无符号数输出结果为4294967168。
练习四
int i= -20; // 补码存储为 1110 1110
unsigned int j = 10;// 补码存储为 0000 1010
printf("%d\\n", i+j); // 相加得 1000 1010
//按照补码的形式进行运算,最后格式化成为有符号整数
练习五
unsigned int i;
for(i = 9; i >= 0; i--) {
printf("%u\\n",i);
}
该程序运行为无限死循环,当i减小到0时,无符号数没有负数,i从最大int开始减小。
练习六
6.
int main()
{
char a[1000];
int i;
for(i=0; i<1000; i++)
{
a[i] = -1-i;
}
printf("%d",strlen(a));
return 0;
}
输出结果为255,原因是当a[i]减小到-128时越界,开始从127减小当减小到0时,strlen识别到的是’\\0’,由于strlen遇到0不计入长度,所以最后输出结果为255.
练习七
#include <stdio.h>
unsigned char i = 0;
int main()
{
for(i = 0;i<=255;i++)
{
printf("hello world\\n");
}
return 0;
}
输出结果为hello world死循环,因为无符号char类型只有8个比特位最大表示的数为255,当i的值到达255时,再加1的话又从零开始,所以该程序为死循环。
以上是关于数据的存储练习题的主要内容,如果未能解决你的问题,请参考以下文章
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段