int
Ve long
(32 bit ve 64 bit sayılar) hakkında bilgi sahibiyim, ama nedir uint
ve ulong
?
int
Ve long
(32 bit ve 64 bit sayılar) hakkında bilgi sahibiyim, ama nedir uint
ve ulong
?
Yanıtlar:
"U" ön ekli ilkel veri türleri, aynı bit boyutlarına sahip işaretsiz sürümlerdir. Etkili bir şekilde, bu, negatif sayıları saklayamayacakları anlamına gelir, ancak diğer yandan, imzalı meslektaşlarının iki katı büyüklüğünde pozitif sayılar depolayabilirler. İmzalı muadiller "u" ön ekine sahip değildir.
İnt (32 bit) için sınırlar:
int: –2147483648 to 2147483647
uint: 0 to 4294967295
Ve uzun için (64 bit):
long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615
uint
ve ulong
imzasız sürümleridir int
ve long
. Bu, negatif olamayacakları anlamına gelir. Bunun yerine daha büyük bir maksimum değere sahiptirler.
Min Max CLS uyumlu yazın int -2,147,483,648 2,147,483,647 Evet uint 0 4,294,967,295 Hayır uzun -9,223,372,036,854,775,808 9,223,372,036,854,775,807 Evet ulong 0 18,446,744,073,709,551,615 Hayır
Kaynak kodunuzda işaretsiz bir tamsayı yazmak için soneki u
veya U
örneğin kullanabilirsiniz 123U
.
CLS Uyumlu olmak istiyorsanız, genel arayüzünüzde uint ve ulong kullanmamalısınız .
Daha fazla bilgi için belgeleri okuyun:
u
anlamı unsigned
, ulong
işaretsiz büyük bir sayıdır. Sen daha büyük bir değer saklayabilir ulong
daha long
, ama hiçbir negatif sayılar izin verdi.
Bir long
değer, pozitif / negatif bir sayı olup olmadığını göstermek için ilk basamağıyla 64 bit olarak saklanır. aynı ulong
zamanda 64 bittir, tüm 64 bit sayıyı saklamak için. dolayısıyla maksimum ulong 2 (64) -1 iken uzun 2 (63) -1'dir.
Aradaki fark, uint
ve ulong
işaretsiz veri türleri olmasıdır, bu da aralığın farklı olduğu anlamına gelir: Negatif değerleri kabul etmezler:
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
C ++ 'dan bu yana epey zaman geçti ama bu cevaplar biraz yanlış.
Boyuta göre, 'int' hiçbir şey değil. Standart bir tam sayının kavramsal bir değeridir; Yineleme gibi şeyler için hızlı olduğu varsayılır. Önceden ayarlanmış bir boyutu yoktur.
Dolayısıyla, cevaplar int ve uint arasındaki farklar açısından doğrudur, ancak "ne kadar büyük oldukları" ya da aralıklarının ne olduğu hakkında konuştuklarında yanlıştır. Bu boyut tanımsızdır veya daha doğrusu, derleyici ve platform ile değişecektir.
Parçalarınızın boyutunu herkesin önünde tartışmak asla kibar değildir.
Bir programı derlemek, int yapar sen soyut C / C ++ alınan ve beton makina koduna çevirdiniz gibi bir büyüklüğe sahip.
Yani, BUGÜN, pratik olarak en yaygın derleyicilerle konuşursak, doğrular. Ama bunu varsaymayın.
Spesifik olarak: 32 bit bir program yazıyorsanız, int tek şey olacaktır, 64 bit, farklı olabilir ve 16 bit farklıdır. Üçünden de geçtim ve 6502 titremeye kısaca baktım
Kısa bir Google araması şunu gösterir: https://www.tutorialspoint.com/cprogramming/c_data_types.htm Bu da iyi bir bilgidir : https://docs.oracle.com/cd/E19620-01/805-3024/lp64- 1 / index.html
bitlerinizin ne kadar büyük olduğu gerçekten umursamıyorsanız int kullanın; değişebilir.
Bir şeyin ne kadar büyük olduğunu bilmek istiyorsanız size_t ve ssize_t kullanın.
İkili veri okuyor veya yazıyorsanız, int kullanmayın. (Genellikle platforma / kaynağa bağlı) belirli bir anahtar kelime kullanın. WinSDK, bununla ilgili pek çok iyi ve sürdürülebilir örneğe sahiptir. Diğer platformlar da öyle.
Tüm bunların sadece akademik / bilgiçlikçi olduğu fikrine, "SMH" olan insanlardan kod yazmak için ÇOK zaman harcadım. Bunlar, sürdürülemez kod yazan insanları yediler. Elbette, 'int' türünü kullanmak ve fazladan yazı yazmak zorunda kalmadan kullanmak kolaydır. Gerçekte ne anlama geldiklerini anlamak için çok çalışma ve biraz da zihin uyuşturucudur.
İnt'i karıştırdığınızda berbat bir kodlama olur.
hızlı bir tam sayı istediğinizde ve aralığı önemsemediğinizde (işaretli / işaretsiz dışında) int ve uint kullanın.