Q
QSmile
Unregistered / Unconfirmed
GUEST, unregistred user!
一个有符号与无符号数比较的问题,各位小心
一小段代码
var
n1:Integer;
n2WORD;
begin
n1 := -1;
n2 := DWORD(-1);
if n1 <> n2 then
ShowMessage('不相等')
else
ShowMessage('相等');
你认为这段代码运行结果是如何呢? 如果在 C 中,等效的代码一定显示 相等。
但在 Delphi 中是不相等的。 这样的错误我遇到很多次了,特别是在调用 API 时。
因为API 是用 C 写的,很多 API 说明里是 DWORD 的,在 Delphi 中被写成 Integer
还有更烦的。 API 中有些指针参数,有些在 Delphi 中是用 var 来隐式传址,有些又必须手动传地址。哎!干脆取消 var 还方便点
一小段代码
var
n1:Integer;
n2WORD;
begin
n1 := -1;
n2 := DWORD(-1);
if n1 <> n2 then
ShowMessage('不相等')
else
ShowMessage('相等');
你认为这段代码运行结果是如何呢? 如果在 C 中,等效的代码一定显示 相等。
但在 Delphi 中是不相等的。 这样的错误我遇到很多次了,特别是在调用 API 时。
因为API 是用 C 写的,很多 API 说明里是 DWORD 的,在 Delphi 中被写成 Integer
还有更烦的。 API 中有些指针参数,有些在 Delphi 中是用 var 来隐式传址,有些又必须手动传地址。哎!干脆取消 var 还方便点