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

原创 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平台用c++实现的程序移植到android平台用java语言实现的一个通讯程序,由于平台语言都有差别,加之本人之前没有接触过android和java,为了完成任务中间颇费了...
  • trj801028
  • trj801028
  • 2017年04月28日 16:51
  • 378

C中有符号数与无符号数转化之间的危险

无符号数与有符号数之间存在着很多细节问题,稍有不慎就可能导致程序出现不可预料的错误。如果说是在长度相同的数值类型之间相互转化或者向长度比较短的数据转化是没有问题的,结果都是已定义的:多余的位将被简单的...
  • liuhuiyi
  • liuhuiyi
  • 2013年12月23日 18:56
  • 7092

C++有符号和无符号之间的转换

先来看一个程序: #include int main() { unsigned a=5; int b=-10; std::cout
  • ma2595162349
  • ma2595162349
  • 2015年10月24日 20:35
  • 2047

c语言中有符号和无符号数据类型的区别

最大是0---65535,8位2进制数,有符号也是8位2进制,只不过第一位用来表示符号了,所以有符号的范围是-32768---32767....
  • gogoky
  • gogoky
  • 2014年10月03日 20:02
  • 5960

无符号与有符号数之间的强制转换

Question:
  • zhi_jian
  • zhi_jian
  • 2014年07月27日 15:40
  • 2271

解决警告——warning C4018: “<”: 有符号/无符号不匹配

 今天遇到这个问题,虽然不影响程序运行,但作为完美主义者,有警告总感觉不舒服,所以就查了一下解决方法: 出错代码: for(int j=0;j 出错原因分析: detector 是一个V...
  • lxw907304340
  • lxw907304340
  • 2015年08月10日 15:24
  • 6213

C++ 中有符号类型到无符号类型的转换

为了更好地解释下面的代码,先来介绍一些背景知识,在我的计算机中, char 类型占 8 个比特位,那么, unsigned char 类型能表示的数的范围为 0 ~ 2的8次方 - 1,即 0 ~ ...
  • gcvdsvb
  • gcvdsvb
  • 2014年03月06日 21:54
  • 1823

无符号整型与有符号整型

最近对于有符号整型与无符号整型,感觉很是头疼,都不知道怎么一回事。先看例子#includeint main(void){    unsigned a=2;     int b=-3;    int c...
  • canye1984
  • canye1984
  • 2010年09月12日 19:37
  • 8957

有符号类型和无符号类型

有符号类型、无符号类型,原码、反码、补码。
  • android_bar
  • android_bar
  • 2017年08月02日 10:52
  • 288

无符号和有符号的整形比较

uint a = 1;int  b = -1; a 与b进行比较 结果是a
  • spierman800630
  • spierman800630
  • 2006年05月27日 02:51
  • 700
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序调试日志-有符号 无符号
举报原因:
原因补充:

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