परिचय
सी भाषामा, पूर्णांक प्रकारका डाटालाई ह्यान्डल गर्दा «संकेत सहित (signed)» र «संकेत बिना (unsigned)» दुई प्रकारका हुन्छन्। विशेष गरी unsigned
प्रकारलाई नकारात्मक मान नभई पूर्णांक प्रकार को रूपमा हेरिन्छ, र विशिष्ट उद्देश्यहरूका लागि अत्यन्त उपयोगी हुन्छ। तर, यसको विशेषताहरू बुझ्न नसिकेर प्रयोग गर्दा, अप्रत्याशित बगहरू उत्पन्न हुन सक्छन्।
यो लेखमा, सी भाषामा unsigned
को प्रयोग विधि र सावधानीहरू बारे विस्तृत व्याख्या गरिन्छ। विशिष्ट कोड उदाहरणहरूसँगै, unsigned
को फाइदाहरू र जोखिमहरू बुझेर, उपयुक्त रूपमा उपयोग गर्न सक्षम बनौँ।
unsigned भनेको के? मूलभूत बुझाइ
unsigned भनेको के?
C भाषामा, पूर्णांक प्रकार(int
वा char
आदि)मा unsigned
निर्दिष्ट गरेर, साइनरहित(नकारात्मक मान नहुने)पूर्णांक प्रकार को रूपमा प्रयोग गर्न सकिन्छ।
उदाहरणका लागि, सामान्य int
प्रकार(साइनयुक्त)ले, निम्न जस्तो दायरा का मानहरु ह्यान्डल गर्न सक्छ।
int प्रकार(32bit वातावरणमा भएमा)
-2,147,483,648 - 2,147,483,647
अर्कोतिर、unsigned int
प्रकारले, नकारात्मक संख्याहरु नराख्ने सट्टा, थप फराकिलो दायरा का धनात्मक मानहरु ह्यान्डल गर्न सक्छ।
unsigned int प्रकार (32bit वातावरणमा)
0 - 4,294,967,295
अर्थात्、unsigned
प्रयोग गरेर, ठूलो मानहरु भण्डारण गर्न सकिन्छ।
unsigned को मूलभूत घोषणा विधि
unsigned
प्रयोग गर्दा、निम्न अनुसार डाटा प्रकार अघि unsigned
लगाएर घोषणा गर्दछौं।
#include <stdio.h>
int main() {
unsigned int num = 3000000000;
printf("%un", num); // 3000000000
return 0;
}
यसरी、unsigned
प्रयोग गरेर, सामान्य int
भन्दा ठूलो मानहरु ह्यान्डल गर्न सकिन्छ।
unsigned को डेटा प्रकार र अभिव्यक्ति दायरा
unsigned को प्रकारहरू र दायरा
C भाषा मा、unsigned
विभिन्न डेटा प्रकारहरूमा लागू गर्न सकिन्छ। प्रत्येक प्रकारको आकार र दायरा तलको तालिकामा देखाइएको छ।
डेटा प्रकार | आकार (बाइट) | दायरा |
---|---|---|
unsigned char | 1 | 0 – 255 |
unsigned short | 2 | 0 – 65,535 |
unsigned int | 4 | 0 – 4,294,967,295 |
unsigned long | 4 वा 8 | वातावरण अनुसार |
unsigned long long | 8 | 0 – 18,446,744,073,709,551,615 |
※ आकार वातावरण अनुसार फरक हुन्छ को कारण, सधैं sizeof()
प्रयोग गरेर जाँच गर्नु उत्तम हुन्छ।
#include <stdio.h>
int main() {
printf("Size of unsigned int: %zu bytesn", sizeof(unsigned int));
return 0;
}
unsigned को प्रयोग उदाहरण
वास्तविक रूपमा unsigned
प्रयोग गरेर, संख्याको अधिकतम मान जाँच गरौं।
#include <stdio.h>
#include <limits.h>
int main() {
printf("Max unsigned int: %un", UINT_MAX);
return 0;
}
यो कोड चलाएमा, वातावरण अनुसारको unsigned int
को अधिकतम मान आउटपुट हुन्छ।
unsigned को मूलभूत प्रयोग
unsigned को घोषणा र असाइनमेंट
unsigned
प्रयोग गर्दा, तलको जस्तै चललाई घोषणा गर्नुहोस्。
#include <stdio.h>
int main() {
unsigned int num1 = 100;
unsigned int num2 = 200;
printf("num1: %un", num1);
printf("num2: %un", num2);
return 0;
}
यो प्रोग्राममा, unsigned int
प्रकारको चल num1
र num2
घोषणा गरी, क्रमशः 100 र 200 मान असाइन गरिएका छन्।
unsigned प्रयोग गर्दा ध्यान दिनु पर्ने बुँदा
signed र unsigned को मिश्रणले उत्पन्न हुने बग
साइन गरिएको पूर्णांक (int
) र unsigned int
लाई तुलना गर्दा, अनपेक्षित परिणामहरू उत्पन्न हुन सक्छ।
#include <stdio.h>
int main() {
int a = -5; // signed
unsigned int b = 10; // unsigned
if (a < b) {
printf("a b भन्दा सानो छn");
} else {
printf("a b भन्दा ठूलो छn");
}
return 0;
}
यो कोडमा, a
भनेको -5
हो, त्यसैले b=10
भन्दा सानो हुनु पर्छ, तर a
लाई unsigned int
मा रूपान्तरण गरिएपछि, अनपेक्षित तुलना परिणाम हुन्छ।

unsigned प्रयोग गर्नुपर्ने केसहरू र टाढा राख्नुपर्ने केसहरू
unsigned प्रयोग गर्नुपर्ने केसहरू
✔ नकारात्मक मानलाई विचार गर्ने आवश्यकता नहुनु(उदाहरण: बाइनरी डेटा प्रक्रिया)
✔ मेमोरी दक्षता अनुकूलन गर्न चाहनुहुन्छ(उदाहरण: एम्बेडेड सिस्टम)
✔ बिट अपरेसनलाई धेरै प्रयोग गर्ने अवस्थामा(उदाहरण: फ्ल्याग व्यवस्थापन)
unsigned टाढा राख्नुपर्ने केसहरू
✘ साइन गरिएको भेरिएबलसँग मिश्रित गर्दा(अनपेक्षित प्रकार रूपान्तरण उत्पन्न हुन्छ)
✘ नकारात्मक मानलाई ह्यान्डल गर्ने सम्भावना भएको अवस्थामा(अनपेक्षित बग उत्पन्न हुन्छ)
✘ लूप भेरिएबलको रूपमा प्रयोग गर्ने अवस्थामा(ओभरफ्लोको जोखिम)
सामान्य गलत धारणाहरू र तिनीहरूको समाधान(FAQ)
unsigned प्रयोग गर्दा गणना छिटो हुन्छ?
गलत धारण
「unsigned
प्रयोग गर्दा, signed
भन्दा गणना छिटो हुन्छ」यसरी सोच्न सकिन्छ।
सही उत्तर
आधुनिक CPU मा, unsigned
र signed
को गणना गति लगभग समान हुन्छ।
उपाय
✔ unsigned
प्रयोग गर्ने कि न गर्ने निर्णय गणना गति होइन, डेटा को अर्थमा आधारित गरेर गर्नुहोस्।
सारांश
यहाँसम्म、unsigned
सम्बन्धी सामान्य गलतफहमीहरू र तिनीहरूको समाधान प्रस्तुत गरेका छौं。
यस लेखको मुख्य बुँदाहरू
unsigned
ले गणना गति सुधार्दैन।signed
सँगको रूपान्तरणमा सावधानी आवश्यक(विशेष गरी ओभरफ्लो हुँदा व्यवहार)。- लूप भेरिएबलमा
unsigned
प्रयोग गर्दा अनन्त लूप बग उत्पन्न हुन सक्छ। unsigned char
बाइनरी डेटा प्रोसेसिङको लागि उपयुक्त छ।- नकारात्मक मानलाई
unsigned
मा असाइन गर्दा अनपेक्षित व्यवहार हुन्छ।
यी बुझ्नुभयो भने, C भाषा मा unsigned
लाई उपयुक्त रूपमा प्रयोग गर्न सक्नुहुन्छ。