C# GetAsyncKeyState声明有什么区别吗? 5C
    [DllImport("user32.dll")]
   // public static extern int GetAsyncKeyState(int vKey);    //1
  //  protected static extern short GetAsyncKeyState(int vKey);  //2

        第一种方法在我的机器上面没有问题,但是换了机器就不行,GetAsyncKeyState返回值很奇怪没有见过的值,每次运行程序返回结果都不一样。第二种我的机器和其他机器都正常。

3个回答

根据msdn
函数原型是
SHORT WINAPI GetAsyncKeyState(
In�0�2int vKey
);

当然,把函数定义成int也没事,因为c++会自动将short转换成int。

至于protected、public,可见性不同,但是如果你定义在窗体上,或者在本类使用,则没有什么区别。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复waesaeasea: 这要看你的代码,以及你说的“执行结果不同”是什么意思。
2 年多之前 回复
hcli168
waesaeasea 问题是,我的执行结果不同
2 年多之前 回复

区别是当然有,short是Int16也就是16位表示范围为0~65535,而int是Int32也就是32位表示范围0~4.29e+9,所能表示的范围不一样,也就是说你这个接口返回值如果大于short类型所能表示的范围的话将会返回short类型的补码给你,例如你这个接口返回65537的话就会返回给你-1,其他的没什么区别

int a;是声明,如果不给它赋值,也就是定义,你无法使用它。
a = 10; 是定义。
int a = 10; 是声明+ 定义。

hcli168
waesaeasea 答非所问
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐