为什么格式(‘%u’,[ – 100])会导致’4294967196’?我在D7和XE2中对此进行了测试.
Format函数上的documentation表示:
%u Unsigned decimal. Similar to %d,but no sign is output.
所以我希望结果为’100′.
这是一个错误吗?
解决方法
不,这不是一个错误.
你告诉Format
第一个参数是无符号整数,但实际上你传递了一个有符号整数.该有符号整数被解释为无符号,有符号值-100的位模式等于无符号值4294967196.
实际上你的代码是错误的.格式字符串定义了编译器无法强制执行的协定,因为Format的参数是弱类型的.您有责任确保当您承诺传递无符号值时确实传递了无符号值.这里的代码中的错误在逻辑上等同于传递字符串或浮点值,这是一个您将更容易识别的错误.