Size: a a a

2020 November 04

ИИ

Иванов Иванов... in ErlangRus
Źmićer Rubinštejn
Есть функция enif_get_uint64. Как из эрланга понять, какой тип у инта у меня? Т.е. почему я не использую везде enif_get_int или что-то типа такого?
это из-за типизации в C, int имеет зависимый от платформы размер, а int64 всегда 8 байт.
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Maksim Lapshin
Кажется ты спрашиваешь про то, чем отличается int от uint64?
кажется я понимаю чем они отличаются, но вот когда я из эрланга зову нифку, какой тип у числа не понятно.

my_nif_module:simple_nif(1,2)
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Вот тут 1 и 2 - какой у них тип будет
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Вроде как они положительные, значит теоретически может быть unsigned
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Короче говоря, вопрос в том, как их хранит эрланг
источник

ИИ

Иванов Иванов... in ErlangRus
Źmićer Rubinštejn
кажется я понимаю чем они отличаются, но вот когда я из эрланга зову нифку, какой тип у числа не понятно.

my_nif_module:simple_nif(1,2)
в nif передается TERM, а кастить ты его будешь уже внутри
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Иванов Иванов
в nif передается TERM, а кастить ты его будешь уже внутри
Это то понятно. Но чем его кастить
источник

ŹR

Źmićer Rubinštejn in ErlangRus
get_int или get_uint или get_int64
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Из эрланга я могу гарантировать только что это к примеру не флоат
источник

ŹR

Źmićer Rubinštejn in ErlangRus
А его знак и размер я заранее как могу знать?
источник

ИИ

Иванов Иванов... in ErlangRus
Źmićer Rubinštejn
Это то понятно. Но чем его кастить
предполагается что ты знаешь что делаешь, в erlang не лимитируется размерность целого
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Иванов Иванов
предполагается что ты знаешь что делаешь, в erlang не лимитируется размерность целого
То есть если я хочу сделать к примеру add, то по хорошему мне надо делать get_int64?
источник

ŹR

Źmićer Rubinštejn in ErlangRus
И оно все нафик упадет, если там будет слишком большое число?
источник

EB

Eduard Bondarenko in ErlangRus
скорее всего будет ub, конечно надо понимать какого размера число туда может прийти
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Eduard Bondarenko
скорее всего будет ub, конечно надо понимать какого размера число туда может прийти
Надо поэкспериментировать чтоли
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Но звучит как-то не круто
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Да уж. Проверил я и оно реально падает когда инт чуть чуть большой
источник

ŹR

Źmićer Rubinštejn in ErlangRus
А как его вычитать?
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Хоть бы по кускам
источник

ИИ

Иванов Иванов... in ErlangRus
не, приведение терма по идее проверит как минимум - знаковое или незнаковое значение в нем, влазит или не влазит
источник