1

Тема: -0 лулзы в lua

print(-0)
print(-0)

оут:
-0
-0


print(-0)
print(0)

оут:
-0
-0


print(0)
print(0)

оут:
0
0


print(0)
print(-0)

оут:
0
0


более того:

a = {[-0] = 0}
print(a[0])
b = {[0] = 0}
print(b[0])

оут:
-0
-0


a = {[0] = 0}
print(a[0])
b = {[-0] = 0}
print(b[0])

оут:
0
0


a = {[0] = -0}
print(a[0])
b = {[0] = 0}
print(b[0])

оут:
0
0


ftw? кто шарит разъясните, а то меня это сильно озадачило.



2 (25.08.2011 22:39:24 отредактировано Niew)

Re: -0 лулзы в lua

ковыряй типы
number (числовой)
string (строковый)
всё станет ясно, ну ещё почита про знаковые и беззнаковые



3

Re: -0 лулзы в lua

Niew пишет:

ковыряй типы
number (числовой)
string (строковый)
всё станет ясно, ну ещё почита про знаковые и беззнаковые

типы я ковырял, string тут не причём, знаковые и беззнаковые насколько я знаю имеют разницу в смещении в беззнаковых на половину допустимого диапазона и всё. number в луа есть не что иное как double в си, это можно посмотреть в сорцах луа

мне кажется это какая то фишка луа, ибо там есть ещё пара таких странных штук

кажется что если ты однажды упоминаешь ноль то дальше он будет с таким знаком с каким был в первый раз вне зависимости где именно он стоял.
хотя вообще по моему не должно быть -0 вообще. целочисленные типы имеют диапазон -n .. n-1 (например -128..127 и там нет места на 0 и -0, а отдельно знак не хранится, тогда бы диапазон был бы -127..127 и было бы два разных числа -0 и 0), а с плавающей запятой это целочисленные + смещение запятой

ох, извиняюсь за пунктуацию.