NGL*_*GLN 5 delphi string-formatting
为什么会Format('%u', [-100])导致'4294967196'?我在D7和XE2中对此进行了测试.
Format('%u', [-100])
'4294967196'
关于该功能的文档Format说:
Format
%u无符号十进制.与%d类似,但不输出任何符号.
所以我希望得到一个结果'100'.
'100'
这是一个错误吗?
Dav*_*nan 13
不,这不是一个错误.
您告诉Format第一个参数是无符号整数,但实际上您传递了有符号整数.该有符号整数被解释为无符号,有符号值-100的位模式等于无符号值4294967196.
4294967196
实际上你的代码是错误的.格式字符串定义了编译器无法强制执行的协定,因为参数Format是弱类型的.您有责任确保当您承诺传递无符号值时确实传递了无符号值.这里的代码中的错误在逻辑上等同于传递字符串或浮点值,这是一个您将更容易识别的错误.
归档时间:
13 年,10 月 前
查看次数:
265 次
最近记录: