¿Cuál es la diferencia entre "int" y "uint" / "long" y "ulong"?


Sé acerca de int y long (números de 32 bits y 64 bits), pero ¿qué son uint y ulong?

Author: HerbalMart, 2010-09-16

4 answers

Los tipos de datos primitivos prefijados con "u" son versiones sin signo con los mismos tamaños de bits. Efectivamente, esto significa que no pueden almacenar números negativos, pero por otro lado pueden almacenar números positivos dos veces más grandes que sus contrapartes firmadas. Las contrapartes firmadas no tienen el prefijo "u".

Los límites para int (32 bit) son:

int: –2147483648 to 2147483647 
uint: 0 to 4294967295 

Y para long (64 bit):

long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615
 140
Author: Isak Savo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-26 12:59:49

uint y ulong son las versiones sin signo de int y long. Eso significa que no pueden ser negativos. En cambio, tienen un valor máximo más grande.

Type    Min                           Max                           CLS-compliant
int     -2,147,483,648                2,147,483,647                 Yes
uint    0                             4,294,967,295                 No
long    –9,223,372,036,854,775,808    9,223,372,036,854,775,807     Yes
ulong   0                             18,446,744,073,709,551,615    No

Para escribir un int literal sin signo en su código fuente puede usar el sufijo u o U por ejemplo 123U.

No debe usar uint y ulong en su interfaz pública si desea ser Compatible con CLS.

Lea la documentación para más información información:

Por cierto, también hay corto y ushort y byte y sbyte.

 29
Author: Mark Byers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-11 17:10:37

u significa unsigned, por lo que ulong es un gran número sin signo. Puede almacenar un valor mayor en ulong que long, pero no se permiten números negativos.

Un valor long se almacena en 64 bits,con su primer dígito para mostrar si es un número positivo/negativo. mientras que ulong es también de 64 bits, con todos los 64 bits para almacenar el número. así que el máximo de ulong es 2(64)-1, mientras que long es 2 (63)-1.

 9
Author: Danny Chen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-16 06:40:47

La diferencia es que los uint y ulong son tipos de datos sin signo, lo que significa que el rango es diferente: No aceptan valores negativos:

int range: -2,147,483,648 to 2,147,483,647
uint range: 0 to 4,294,967,295

long range: –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
ulong range: 0 to 18,446,744,073,709,551,615
 7
Author: srodriguez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-21 13:18:26