#include
int main()
{int a = 你的学号末两位-100; //0x?????????char b= 你的学号末两位-100;short c=你的学号末两位-100;unsigned int d = 你的学号末两位-100;int e[5]={你的学号末两位-100,你的学号末两位-99,你的学号末两位-98,你的学号末两位-97,你的学号末两位-96};float f1 = -11.375;float f2 = 0.1;a=1 ;//把a的次高字节变成EE ?(作业的要求是将a改成自己的学号!)return 0;
}
过程参考:
注意:每个变量有自己的数据类型,不同数据类型所占字节数也不同,具体长度参考下图
#include
#include "stdafx.h"
int main()
{int a = 16-100; //0xffffffacchar b= 16-100; //0xacshort c=16-100; //0xffacunsigned int d = 16-100; //0xffffffacint e[5]={16-100,16-99,16-98,16-97,16-96}; //0xffffffac 0xffffffad 0xffffffae 0xffffffaf 0xffffffb0float f1 = -11.375; //0xc1360000float f2 = 0.1; //0xcd3dcccccda=1 ;//把a的次高字节变成EE ? //这里填自己学号的那一块return 0;
}
struct{ char a[3]; float b; short c;double d;short f;} record; record.b= 20.59375f; record.c= -0xDCBA;
若record变量的首地址为0xFF20,则
注意:填写答案时,如须填写英文字母一律使用大写。
(1)地址 0xFF25 中内容为 0x FF。(填十六进制数)
(2)地址 0xFF28 中内容为 0x E9。(填十六进制数)
(3)浮点型 record.b 是按 IEEE754 标准编码后存放。
(4)record.f 的地址为0x FF38。(填十六进制数)
(5)结构体record一共占 32 个字节的大小。(填十进制数)
通过使用VC编译器的调试功能查看内存中的数据,
(1)填写上述空格,并截图你的实验过程;
(2)对以上内存结果进行验算,写出你的理由。
仅供参考!
理由:根据下图可以知道,结构体record的内存占用32个字节,利用软件可以查到,结构体record的首地址为0x 0019ff30,而record.f的地址为0x 0019ff48,两个地址相差0x 18,所以假如record变量的首地址为0xFF20,则record.f的地址为0xFF38。
以上是题目描述,以下是参考
使用参考:
使用“监视”和“快速监视”窗口监视变量
使用参考:
查看调用堆栈,并在调试器中使用“调用堆栈”窗口
使用参考:
检查自动和局部变量窗口中的变量
使用参考:
在“寄存器”窗口中查看寄存器值(C#、C++、Visual Basic、F#)
使用参考:
Visual Studio调试器指南—Disassembly窗口
#include
int main()
{int a = 你的学号末两位-100; //0x?????????int e[5]={你的学号末两位-100,+1,+2,+3,+4};float f1 = -11.375;return 0;
}
在其他任意编译器中(Codeclock/Dev c++/VS)复现(1)中的部分结果,并截图3张
注意,这里要求使用其他的编译器,为了教程通用,统一采用小熊猫C++进行演示,点击此处下载小熊猫C++(密码是f0tp,选择倒数第二个下载)
下面是我的调试过程: