程序调试日志-有符号 无符号

原创 2011年01月20日 18:16:00

原来代码:

    UINT size=m_vecContent.size();
    UINT i;
    UINT nTotalHeight=0,nTempHeight=0,nContentWndHeight=RECT_H(&m_rtData);;
    for(i=size-1;i>=0;i--)
    {
        myword_row *pRow = m_vecContent[i];
        nTempHeight = CalcLineHeight(m_vecContent[i]);
        nTotalHeight+=nTempHeight;
        if(nTotalHeight>nContentWndHeight)
        {
            return i+1;
        }
    }

i 为无符号型 和 0 比较总是>=0,所以当 (int)i <0 的时候其实 要结束循环,但是继续执行,程序崩溃。

 

后改为

  UINT size=m_vecContent.size();
    int i;
    UINT nTotalHeight=0,nTempHeight=0,nContentWndHeight=RECT_H(&m_rtData);;
    for(i=size-1;i>=0;i--)
    {
        myword_row *pRow = m_vecContent[i];
        nTempHeight = CalcLineHeight(m_vecContent[i]);
        nTotalHeight+=nTempHeight;
        if(nTotalHeight>nContentWndHeight)
        {
            return i+1;
        }
    }

即 改正问题。

因为 在程序中很多地方个数都用 无符号整型表示,我们在循环的时候如果要保持一致的话(为了不引起警告,有符号和无符号的比较),我们如果采用 UINT 而条件没有更改的话,很容易崩溃。

以上。

 

相关文章推荐

符号文件——Windows 应用程序调试必备

本文转载自:http://www.vckbase.com/document/viewdoc/?id=1710 一、何谓符号文件?   符号文件(Symbol Files)是一个数据信息文件,它包含...

符号文件(.pdb)——Windows 应用程序调试必备

符号文件(Symbol Files)是一个数据信息文件,它包含了应用程序二进制文件(比如:EXE、DLL等)调试信息,专门用来作调试之用,最终生成的可执行文件在运行时并不需要这个符号文件,但你的程序中...

Windows应用程序调试-符号文件

一、何谓符号文件? 符号文件(Symbol Files)是一个数据信息文件,它包含 了应用程序二进制文件(比如:EXE、DLL等)调试信息,专门用来作调试之用,最终生成 的可执行文件在运行时并不...

[面试算法]有一无符号整型数组,大小为10, 初始的数值随机,但在[0, 99]之间。请用C语言写一个过滤程序,令数组内的数据互不相等。

写了个算法实现,就想做个记录。以后有时间测试下正确性,以及是否有更好的思路。 //有一无符号整型数组,大小为10, 初始的数值随机,但在[0, 99]之间。请用C语言写一个过滤程序,令数组内...
  • claien
  • claien
  • 2014年02月25日 22:35
  • 2263

[算法]用位运算的方法实现无符号整数的除法原理及程序

相信知道除法的作用的人都知道除法怎么来计算吧,不过计算机计算除法的方法可能优点浪费资源了以下是使用位计算转换除法的过程,相信知道游戏编程的朋友对这个应该不陌生吧原理:假如要实现A/B,B如果是2的整数...
  • yctccg
  • yctccg
  • 2016年08月16日 10:38
  • 737

STM32串口通信代码、ASCII码、XU4串口通信,printf只会转换为无符号类型,linux下的串口通信程序

1、其里面的的通信协议是是自己定的,这里 是检测到数据的结尾是以0x0d、0x0a结尾,则表示接受的数据完成了,这个数据是我想要的,这样子就不会出现一些错乱的数据信息。其中的0x8000、0x4000...

编一个程序,完成64位数据(无符号)的加法、减法运算。不允许直接使用64位的数据类型。(未完成)

#include #include typedef struct Num_64{long low;long high;}Num_64;Num_64 Add_64(Num_64 a, Num_64 b)...

Android下使用GDB调试无符号ELF文件

本文解决如何在Android下使用gdb来调试无符号的ELF文件,尤其是内存buju

调试无符号驱动的时,快速到达DriverEntry的方法——2

既上一篇,使用sxe 的指令设置异常来断驱动的主函数的方法后,我们继续学习高端调试下断的方法。 利用断加载驱动的函数的方法,同样能够达到驱动的入口。这个加载驱动的函数就是:IopLoadDr...
  • xum2008
  • xum2008
  • 2012年01月23日 19:12
  • 1567
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序调试日志-有符号 无符号
举报原因:
原因补充:

(最多只允许输入30个字)