百度空间 | 百度首页 
 
查看文章
 
【Hack专属】二进制、八进制、十六进制(三)
2008年07月25日 星期五 11:52

接上

6.6 通过调试查看变量的值

下面我们来动手完成一个小小的实验,通过调试,观察变量的值。

我们在代码中声明两个int 变量,并分别初始化为5和-5。然后我们通过CB提供的调试手段,可以查看到程序运行时,这两个变量的十进制值和十六进制值。

首先新建一个控制台工程。加入以下黑体部分(就一行):

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

int aaaa = 5, bbbbb = -5;

return 0;

}

//---------------------------------------------------------------------------

没有我们熟悉的的那一行:

getchar();

所以,如果全速运行这个程序,将只是DOS窗口一闪而过。不过今天我们将通过设置断点,来使用程序在我们需要的地儿停下来。

设置断点:最常用的调试方法之一,使用程序在运行时,暂停在某一代码位置,

 

在CB里,设置断点的方法是在某一行代码上按F5或在行首栏内单击鼠标。

如下图:

在上图中,我们在return 0;这一行上设置断点。断点所在行将被CB以红色显示。

 

接着,运行程序(F9),程序将在断点处停下来。

(请注意两张图的不同,前面的图是运行之前,后面这张是运行中,左边的箭头表示运行运行到哪一行)

 

当程序停在断点的时,我们可以观察当前代码片段内,可见的变量。观察变量的方法很多种,这里我们学习使用Debug Inspector (调试期检视),来全面观察一个变量。

以下是调出观察某一变量的 Debug Inspector 窗口的方法:

 

先确保代码窗口是活动窗口。(用鼠标点一下代码窗口)

按下Ctrl键,然后将鼠标挪到变量 aaaa 上面,你会发现代码中的aaaa变蓝,并且出现下划线,效果如网页中的超链接,而鼠标也变成了小手状:

点击鼠标,将出现变量aaaa的检视窗口:

(笔者使用的操作系统为WindowsXP,窗口的外观与Win9X有所不同)

从该窗口,我可以看到:

aaaa :变量名

int :变量的数据类型

0012FF88:变量的内存地址,请参看5.2 变量与内存地址;地址总是使用十六进制表达

5 : 这是变量的值,即aaaa = 5;

0x00000005 :同样是变量的值,但采用16进制表示。因为是int类型,所以占用4字节。

 

首先先关闭前面的用于观察变量aaaa的Debug Inspector窗口。

现在,我们用同样的方法来观察变量bbbb,它的值为-5,负数在计算机中使用补码表示。

正如我们所想,-5的补码为:0xFFFFFFFB。

 

再按一次F9,程序将从断点继续运行,然后结束。

6.7 本章小结

很难学的一章?

来看看我们主要学了什么:

 

1)我们学会了如何将二、八、十六进制数转换为十进制数。

三种转换方法是一样的,都是使用乘法。

 

2)我们学会了如何将十进制数转换为二、八、十六进制数。

方法也都一样,采用除法。

 

3)我们学会了如何快速的地互换二进制数和十六进制数。

要诀就在于对二进制数按四位一组地转换成十六进制数。

在学习十六进制数后,我们会在很多地方采用十六进制数来替代二进制数。

 

4)我们学习了原码、反码、补码。

把原码的0变1,1变0,就得到反码。要得到补码,则先得反码,然后加1。

以前我们只知道正整数在计算机里是如何表达,现在我们还知道负数在计算机里使用其绝对值的补码表达。

比如,-5在计算机中如何表达?回答是:5的补码。

 

5)最后我们在上机实验中,这会了如何设置断点,如何调出Debug Inspector窗口观察变量。

以后我们会学到更多的调试方法。

[到页首]


类别:【系统问题】 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu