GetDlgItemInt()返回类型是 UINT型,但是为何可以返回负数呢?
-------------------------------------
这个函数的原型是:UINT GetDlgItemInt(int nID, BOOL* lpTrans = NULL,
BOOL bSigned = TRUE) const;按理说,只能返回正整数和0呀.但是,实际上,可以返回负数呀,为什么呢?
假如一个文本框 IDC_EDIT1,我将文本框的值取出来,显示一下.
我在 IDC_EDIT1中输入负值,用这个函数可以正常显示出来,这是为什么呢?
这个函数的返回值可是 UINT 型呀?
int i;
char str[10];
i=GetDlgItemInt(IDC_EDIT1);
itoa(i,str,10);
MessageBox(str);

解决方案 »

  1.   

    你不要管正负,你从二进制补码去看
    你把GetDlgItemInt声明成INT或UINT不影响其返回值的内容
    而且最终显示出来是多少与GetDlgItemInt返回类型,int i的类型都无关
    由itoa决定
      

  2.   

    你的i是int型的
    当然可以显示负数了
      

  3.   

    但是我就是,转不过弯来,GetDlgItemInt()的返回值是 UINT 呀。这是个无符号整形呀。
      

  4.   

    int 和 UINT 都是4位,对不对?
    同一块内存,你把他转换为UINT 如果是0xFFFFFFFF
    nan那么你再把他转换为int 他就是-1
      

  5.   

    你改成unsigned i也显示负的,你把itoa的参数改成unsigned还是负的
      

  6.   

    int 和 UINT 都是4位,对不对?
    同一块内存,你把他转换为UINT 如果是0xFFFFFFFF
    nan那么你再把他转换为int 他就是-1很好