Wiem o int
i long
(numery 32-bitowe i 64-bitowe), ale jakie są uint
i ulong
?Jaka jest różnica między "int" i "uint"/"long" i "ulong"?
Odpowiedz
Pierwotne typy danych z prefiksem "u" to niepodpisane wersje o tych samych rozmiarach bitowych. Skutecznie oznacza to, że nie mogą przechowywać liczb ujemnych, ale z drugiej strony mogą przechowywać liczby dodatnie dwa razy większe niż ich podpisane odpowiedniki. Podpisane odpowiedniki nie mają prefiksu "u".
Granice dla int (32 bitów) są:
int: –2147483648 to 2147483647
uint: 0 to 4294967295
I przez długi (64 bitów)
long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615
uint
i ulong
to niepodpisane wersje int
i long
. Oznacza to, że nie mogą być ujemne. Zamiast tego mają większą maksymalną wartość.
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
Aby napisać dosłownego unsigned int w kodzie źródłowym można użyć przyrostka u
lub U
np 123U
.
Nie powinieneś używać uint i ulong w twoim publicznym interfejsie, jeśli chcesz być CLS-Compliant.
Przeczytaj dokumentację uzyskać więcej informacji:
Nawiasem mówiąc, istnieje również short i ushort i byte i sbyte.
To jest interesujące - co masz na myśli mówiąc o zgodności z CLS? Link prowadzi do dokumentacji MSDN dla int. Jeśli przez "CLS" masz na myśli C# language spec to nie rozumiem - specyfikacja wyraźnie opisuje zarówno uint, jak i ulong (sekcja 1.3) –
@ Isak Savo: Naprawiono link, dziękuję za wskazanie błędu. –
@ Isak Savo: Ważne jest, aby być zgodnym z CLS, jeśli piszesz interfejs, który może być używany przez inne języki .NET niż C#. –
Różnica polega na tym, że uint
i ulong
są unsigned rodzaje danych, która zakres jest inny: nie akceptują wartości ujemnych:
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
u
oznacza unsigned
, więc ulong
to duża liczba bez znaku. Możesz przechowywać większą wartość w ulong
niż long
, ale nie można wprowadzać liczb ujemnych.
Wartość long
jest zapisana w 64-bitach, z pierwszą cyfrą do wyświetlenia, jeśli jest to liczba dodatnia/ujemna. podczas gdy ulong
jest również 64-bitowy, ze wszystkimi 64 bitami do przechowywania numeru. więc maksimum ulong wynosi 2 (64) -1, natomiast długie to 2 (63) -1.
- 1. Różnica między int * i int * i
- 2. Jaka jest różnica między? : i ||
- 3. Jaka jest różnica między $ i $$?
- 4. Jaka jest różnica między int i integer w MySQL 5.0?
- 5. Jaka jest różnica między "krótkim int" i "short" wc?
- 6. Jaka jest różnica między int() i floor() w Pythonie 3?
- 7. Jaka jest różnica między sizeof i alignof?
- 8. Różnica między int i deklaracją int int
- 9. Jaka jest różnica między "int * a = new int" i "int * a = new int()"?
- 10. Jaka jest różnica między sysfs_create_file() i sysfs_create_group()?
- 11. Jaka jest różnica między TypedArray.getInteger() i TypedArray.getInt()?
- 12. Jaka jest różnica między getSupportFragmentManager() i getChildFragmentManager()?
- 13. Różnica między void (int) i void (*) (int)
- 14. Jaka jest różnica między static int ai int a?
- 15. Jaka jest różnica między Subtotal i BaseSubtotal?
- 16. Jaka jest różnica między DetachedCriteria i ICriteria
- 17. Jaka jest różnica między & # x00A0; i ?
- 18. Jaka jest różnica między lex i yacc
- 19. jaka jest różnica między dijit i dojo
- 20. Jaka jest różnica między Control.Select() i Control.Focus()?
- 21. Jaka jest różnica między System.Windows.Controls.Control i System.Windows.Forms.Control?
- 22. Jaka jest różnica między apletami i SWING?
- 23. Jaka jest różnica między session.commit() i session.flush()?
- 24. Jaka jest różnica między ImageView.setBackgroundResource i ImageView.setImageResource?
- 25. Jaka jest różnica między Konwertuj i parsuj?
- 26. Jaka jest różnica między JSP i JSTL?
- 27. Jaka jest różnica między Lazarus i CodeTyphon
- 28. Jaka jest różnica między crc32 i crc32b?
- 29. jaka jest różnica między ARM7 i ARM7s
- 30. Jaka jest różnica między http_build_str() i http_build_query()?
To jest całkiem fajne do wymyślenia ręcznie. 32-bitowa zmienna podpisana używa 1-bitowego znaku (dodatniego lub ujemnego), więc może przechowywać wartości między -2^31 a + 2^31 - 1 –
przy porównywaniu int i uint dla użycia, który z nich jest możliwy? –
Co to jest odpowiednik C++? – darkgaze