delphi – 当我给它一个负数时,为什么带有’%u’的格式打印错误值?

为什么格式(‘%u’,[ – 100])会导致’4294967196’?我在D7和XE2中对此进行了测试.

Format函数上的documentation表示:

%u Unsigned decimal. Similar to %d,but no sign is output.

所以我希望结果为’100′.

这是一个错误吗?

解决方法

不,这不是一个错误.

你告诉Format第一个参数是无符号整数,但实际上你传递了一个有符号整数.该有符号整数被解释为无符号,有符号值-100的位模式等于无符号值4294967196.

实际上你的代码是错误的.格式字符串定义了编译器无法强制执行的协定,因为Format的参数是弱类型的.您有责任确保当您承诺传递无符号值时确实传递了无符号值.这里的代码中的错误在逻辑上等同于传递字符串或浮点值,这是一个您将更容易识别的错误.

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...