遍历对象键时,为什么键会转换为新数字?
When looping through object keys, why does the key get converted to a new number?
我有问题,请看这段代码:
#SingleInstance, Force
SetBatchLines, -1
CoordMode, Pixel, screen
FileDelete, Log.txt
listObject := {}
listObject[4280361510] := true
for index1 in listObject
{
FileAppend, % "Item: " . index1 . "`n", Log.txt
}
打印到文件:
Item: -14605786
我希望打印的位置:
Item: 4280361510
为什么我分配的索引是4280361510
时属性显示为-14605786
?
还有:
if (listObject[4280361510]) {
FileAppend, % "But 4280361510 still works. `n", Log.txt
}
if (listObject[-14605786]) {
FileAppend, % "And -14605786 works too. `n", Log.txt
}
打印到文件:
But 4280361510 still works.
And -14605786 works too.
为什么这两个属性的行为就好像它们已分配给对象一样?
4280361510
和 -14605786
是相同的数字 - 在 32 位算术中。带符号的 32 位数字回绕并在大约 20 亿时变为负数 (231)。这个数字几乎已经第二次回绕了,在这种情况下它会再次变为正数。
我有问题,请看这段代码:
#SingleInstance, Force
SetBatchLines, -1
CoordMode, Pixel, screen
FileDelete, Log.txt
listObject := {}
listObject[4280361510] := true
for index1 in listObject
{
FileAppend, % "Item: " . index1 . "`n", Log.txt
}
打印到文件:
Item: -14605786
我希望打印的位置:
Item: 4280361510
为什么我分配的索引是4280361510
时属性显示为-14605786
?
还有:
if (listObject[4280361510]) {
FileAppend, % "But 4280361510 still works. `n", Log.txt
}
if (listObject[-14605786]) {
FileAppend, % "And -14605786 works too. `n", Log.txt
}
打印到文件:
But 4280361510 still works.
And -14605786 works too.
为什么这两个属性的行为就好像它们已分配给对象一样?
4280361510
和 -14605786
是相同的数字 - 在 32 位算术中。带符号的 32 位数字回绕并在大约 20 亿时变为负数 (231)。这个数字几乎已经第二次回绕了,在这种情况下它会再次变为正数。