Entre todos los tutoriales/ejemplos del mundo real, todavía tengo que encontrarme con alguien que use el tipo de datos int, casi pensé que no existía ninguno... ¿Hay alguna razón específica para el dominio indiscutible de uint?
Es inusual necesitar números negativos. Si no necesita números negativos, no hay razón para usar un int
, y es (ligeramente) más fácil escribir código seguro para números positivos si no tiene que preocuparse por lo que sucede si son negativos. (Digo "ligeramente" porque en Solidity todavía tienes que preocuparte por uint
el desbordamiento).
Para la mayoría de los propósitos prácticos, int
también funcionaría, ya que todo lo uint
que puede representar también puede representarse con int
, a menos que sea un número muy grande. Pero si tiene la intención de representar un número positivo, debe usar un tipo de datos destinado a representar un número positivo.
Si necesita manejar números negativos además de números positivos, use un archivo int
.
Como dijeron los otros carteles, si no necesita un número negativo. Un uint le dará más espacio, también parece más eficiente dentro del EVM.
https://ethfiddle.com/mCES1Jc3bH
pragma solidity ^0.4.18;
contract TestInt {
uint value1;
function setVal(uint _value) public {
value1 = _value + 10;
}
function getVal() public returns (uint) {
return value1;
}
int value2;
function set2(int _value) public {
value2 = _value + 10;
}
function get2() public returns (int) {
return value2;
}
uint value;
}
int
/ uint
en este caso. Puede confirmar intercambiando la int
s y uints
en su código: los mismos resultados pero al revés. El código de bytes real generado para cada función es idéntico.
Jonathan Tran
int
s son más simples. ¿Se puede usar este truco conint
s en Solidity también?Edmundo Edgar