“Int” और “uint” / “long” और “ulong” में क्या अंतर है?


जवाबों:


224

"यू" के साथ उपसर्गित आदिम डेटा प्रकार एक ही बिट आकार के साथ अहस्ताक्षरित संस्करण हैं। प्रभावी रूप से, इसका मतलब है कि वे नकारात्मक संख्याओं को संग्रहीत नहीं कर सकते हैं, लेकिन दूसरी ओर वे सकारात्मक संख्याओं को अपने हस्ताक्षरित समकक्षों से दो बार बड़े स्टोर कर सकते हैं। हस्ताक्षरित समकक्षों में "यू" उपसर्ग नहीं है।

Int (32 बिट) के लिए सीमाएं हैं:

int: 2147483648 to 2147483647 
uint: 0 to 4294967295 

और लंबे समय तक (64 बिट):

long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615

12
हाथ से वर्कआउट करने में यह काफी मजेदार है। एक 32-बिट हस्ताक्षरित चर हस्ताक्षर (सकारात्मक या नकारात्मक) के लिए 1 बिट का उपयोग करता है, इसलिए मानों को -2 ^ 31 और + 2 ^ 31 - 1
जैको प्रीटोरियस

जब उपयोग के लिए int और uint की तुलना की जाती है, तो कौन सा संभव है?
अरुण प्रसाद

क्या है c ++ समकक्ष?
डार्कजैग

@JacoPretorius यह गलत है। 8 बिट इंट की सीमा होती है -128 से 127 तक। 9 बिट बिट 256 का प्रतिनिधित्व करता है। इसलिए 8 बिट्स के साथ आप 255 (9 वें वैल - 1) तक के सभी मूल्यों का प्रतिनिधित्व कर सकते हैं। -128 से 127 तक की सीमा की लंबाई बिल्कुल 255 है। इसलिए ऐसा कोई बिट नहीं है जो चिन्ह रखता हो। 127 तक के सभी मूल्य सकारात्मक हैं। ऊपर दिए गए मान नकारात्मक प्रदर्शित होते हैं। 255 होगा -1। 254 -2 होगा और इसलिए एक रास्ता नीचे 128 तक जाएगा।
C4d

मुझे लगता है कि यह भी विशेष रूप से इंट बनाम यूइंट के लिए ध्यान देने योग्य है, अहस्ताक्षरित पूर्णांक सीएलएस-अनुरूप नहीं है, और यह संभव के रूप में अक्सर इंट का उपयोग करने की सिफारिश की जाती है।
db2

38

uintऔर ulongकी अहस्ताक्षरित संस्करण हैं intऔर long। इसका मतलब है कि वे नकारात्मक नहीं हो सकते। इसके बजाय उनका बड़ा अधिकतम मूल्य है।

टाइप मिन मैक्स सीएलएस-अनुपालन
int -2,147,483,648 2,147,483,647 हाँ
uint 0 4,294,967,295 नहीं
लंबी –9,223,372,036,854,775,808 9,223,372,036,854,775,807 हाँ
उलंग 0 18,446,744,073,709,551,615 नहीं

अपने स्रोत कोड में शाब्दिक अहस्ताक्षरित int लिखने के लिए आप प्रत्यय का उपयोग कर सकते हैं uया Uउदाहरण के लिए 123U

यदि आप सीएलएस-शिकायत करना चाहते हैं तो आपको अपने सार्वजनिक इंटरफ़ेस में यूंट और अलॉन्ग का उपयोग नहीं करना चाहिए ।

अधिक जानकारी के लिए प्रलेखन पढ़ें:

वैसे, शॉर्ट और यूथॉर्ट और बाइट और सोबेट भी है


यह दिलचस्प है - सीएलएस अनुपालन के बारे में आपका क्या मतलब है? लिंक int के लिए MSDN दस्तावेज़ीकरण पर जाता है। अगर "सीएलएस" से आपका मतलब सी # भाषा की कल्पना से है तो मुझे समझ में नहीं आता - कल्पना स्पष्ट रूप से यूंट और उलॉन्ग (खंड 1.3) दोनों का वर्णन करती है
सावो

1
@ इस्क साव: यदि आप इंटरफ़ेस लिख रहे हैं जो सी # के अलावा अन्य .NET भाषाओं द्वारा उपयोग किया जा सकता है, तो CLS- संगत होना महत्वपूर्ण है।
मार्क बायर्स

जिज्ञासु कि आप कम और ushort का उल्लेख करते हैं, लेकिन बाइट और सोबते को छोड़ देते हैं :)
रोमन

10

uइसका मतलब है unsigned, ulongबिना हस्ताक्षर के एक बड़ी संख्या है। आप में ulongसे एक बड़ा मूल्य संग्रहीत कर सकते हैं long, लेकिन कोई नकारात्मक संख्या की अनुमति नहीं है।

एक longमान 64-बिट में संग्रहीत किया जाता है, इसके पहले अंक के साथ यह दिखाने के लिए कि क्या यह एक सकारात्मक / नकारात्मक संख्या है। जबकि ulong64-बिट भी है, सभी 64 बिट के साथ संख्या को स्टोर करने के लिए। इसलिए अधिकतम 2 (64) -1 है, जबकि लंबा 2 (63) -1 है।


9

अंतर यह है कि uintऔर ulongअहस्ताक्षरित डेटा प्रकार हैं, जिसका अर्थ सीमा अलग है: वे नकारात्मक मानों को स्वीकार नहीं करते हैं:

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.