+ -
当前位置:首页 → 问答吧 → 初学者,两个问题。

初学者,两个问题。

时间:2011-12-10

来源:互联网

1.看下面的代码:
C/C++ code
#include "iostream"
#define _AFXDLL
using namespace std;

unsigned int test() {
    return -1;
}
int main() {
    int xx = test();
    cout << xx << endl;    //-1
    cout << test() << endl;    //4294967295
    cin.get();
    return 0;
}

如何解释上面的输出?不是说unsigned int不能保存负数吗,那为什么用int xx去接test的返回值,接到的居然是正确 的?
而直接输出test的返回值,结果却不一样。。

2.关于sdk编程,如果用sdk画了一个窗口, 窗口上画了一个按钮,点了这个按钮后,消息是直接发送给这个按钮的还是发送给这个窗口的?

作者: ereere235   发布时间: 2011-12-10

int xx 把返回值强转换了

作者: chengbar   发布时间: 2011-12-10

int xx = test();
  cout << xx << endl; //-1

这个实现了类型转换 把unsigned int 转换成了int 所以你看见的-1

  cout << test() << endl; //4294967295
而这个没有类型转换 直接打印出了unsigned 的-1 所以会是这样的结果



2.关于sdk编程,如果用sdk画了一个窗口, 窗口上画了一个按钮,点了这个按钮后,消息是直接发送给这个按钮的还是发送给这个窗口的?

在win32编程中,有个循环一直在接收用户的消息,首先接收的消息是窗口,然后再由窗口把消息转发给按钮

作者: wojiushi3344   发布时间: 2011-12-10

热门下载

更多