数据的存储练习题

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对象(代码片段

片段着色器中未使用纹理数据 - OpenGL

C语言进阶笔记用图文+代码让你深度理解数据在内存中的存储

如何将代码片段存储在 mongodb 中?

小结(练习题)

如何将 r ggplot 图存储为 html 代码片段