Data Types In ANSI C - एएनएसआई सी में डेटा प्रकार
- _Romeyo Boy_
- 31 दिस॰ 2021
- 7 मिनट पठन
सी प्रोग्रामिंग में एक डेटा-प्रकार वैल्यूज का एक सेट है और उन वैल्यूज पर कार्य करने के लिए निर्धारित है। सी विभिन्न प्रकार के डेटा-प्रकार प्रदान करता है, जो प्रोग्रामर को वैरिएबल के लिए उपयुक्त प्रकार का चयन करने की अनुमति देता है ताकि उसका वैल्यू निर्धारित किया जा सके।
एक प्रोग्रामिंग भाषा में डेटा-प्रकार निश्चित अर्थ और विशेषताओं वाले वैल्यूज के साथ डेटा का संग्रह होता है। उनमें से कुछ पूर्णांक, फ्लोटिंग पॉइंट, कैरेक्टर आदि होते हैं। आमतौर पर, प्रोग्रामिंग भाषाएं दिए गए डेटा-प्रकार के लिए श्रेणी मान निर्दिष्ट करती हैं।
सी भाषा अपने डेटा प्रकारों में समृद्ध है। स्थिरांक को संभालने के लिए भंडारण प्रतिनिधित्व और मशीन निर्देश मशीन से मशीन में भिन्न होते हैं। उपलब्ध डेटा प्रकारों की विविधता के कारण प्रोग्रामर को एप्लिकेशन के साथ-साथ मशीन की आवश्यकताओं के लिए उपयुक्त प्रकार का चयन करने की अनुमति देती है।
C Data Types Are Used To ( सी डेटा प्रकार का उपयोग किया जाता है )
घोषित ( Declared ) होने पर एक वेरिएबल के प्रकार की पहचान ( Identify ) करने में किया जाता हैं।
किसी फ़ंक्शन के रिटर्न मान ( Return Value ) के प्रकार की पहचान करने में किया जाता हैं।
किसी फ़ंक्शन द्वारा अपेक्षित पैरामीटर ( Parameter Expected ) के प्रकार की पहचान करने में किया जाता हैं।
ANSI C तीन प्रकार के डेटा प्रकार प्रदान करता है;
Primary Or Fundamental Data Types ( प्राथमिक या मौलिक डेटा प्रकार )
Derived Data Types ( व्युत्पन्न डेटा प्रकार )
User-Defined Data Types ( उपयोगकर्ता-परिभाषित डेटा प्रकार )

01. Primary Or Fundamental Data Types ( प्राथमिक या मौलिक डेटा प्रकार )
प्रत्येक सी कंपाइलर पांच प्राथमिक ( Primary ) डेटा प्रकारों का समर्थन करता है;
Void
Integer
Character
Floating-Point
Double

Void Data Type
जैसा कि नाम से पता चलता है, इसका कोई वैल्यूज नहीं होता है और आमतौर पर इसका उपयोग फ़ंक्शन के प्रकार को निर्दिष्ट करने के लिए किया जाता है। यदि फ़ंक्शन में एक void ( शून्य ) प्रकार है, तो इसका मतलब है कि फ़ंक्शन कोई मान ( वैल्यूज ) नहीं लौटाएगा।
void प्रकार निर्दिष्ट करता है कि कोई मान उपलब्ध नहीं है। इसका प्रयोग तीन प्रकार की स्थितियों में किया जाता है;
Function returns as void
Function arguments as void
Pointers to void
01). Function returns as void
सी में ऐसे कई फंक्शन्स हैं, जो कोई मूल्य नहीं लौटाते हैं या आप कह सकते हैं कि वे void ( शून्य ) हो जाते हैं। बिना return वैल्यू वाले फ़ंक्शन में return प्रकार void के रूप में होता है। उदाहरण के लिए,
<> Code Example:
void exit (int status);
02). Function arguments as void
सी में ऐसे कई फंक्शन्स हैं, जो किसी भी पैरामीटर को स्वीकार नहीं करते हैं। बिना पैरामीटर वाला फ़ंक्शन void ( शून्य ) को स्वीकार कर सकता है। उदाहरण के लिए,
<> Code Example:
int rand(void);
03. Pointers to void
void * प्रकार का एक पॉइंटर किसी वस्तु के पते का प्रतिनिधित्व करता है, लेकिन उसके प्रकार का नहीं। उदाहरण के लिए, एक मेमोरी आवंटन मेमोरी एलोकेशन फंक्शन void *malloc(size_t size); एक पॉइंटर को void ( शून्य ) पर लौटाता है, जिसे किसी भी डेटा प्रकार में डाला जा सकता है।
Integer Data Type
सी में पूर्णांक ( integer ) भंडारण के तीन वर्ग हैं, अर्थात् short int, int और long int दोनों हस्ताक्षरित ( signed ) और अहस्ताक्षरित ( unsigned ) रूपों में होते हैं।
short int
int
long int

हस्ताक्षरित और अहस्ताक्षरित कीवर्ड दो sign क्वालिफायर होते हैं, जो निर्दिष्ट करते हैं कि एक वेरिएबल सकारात्मक या नकारात्मक या दोनों संख्याओं को संग्रहीत कर सकता है या नहीं।
sign किया गया कीवर्ड एक sign के लिए एक बिट और 16-bits मशीन में संख्या के परिमाण के लिए 15-bits का उपयोग करता है।
अहस्ताक्षरित ( unsigned ) कीवर्ड संख्या के परिमाण के लिए सभी बिट्स को संग्रहीत करने के लिए उपयोग करता है और हमेशा सकारात्मक होता है।
Integer Data Types | Sizes ( In Bits, Bytes ) | Value Range |
int or signed int | 16-bits Or 2-bytes | -32,768 to 32,767 |
unsigned int | 16-bits Or 2-bytes | 0 to 65535 |
short int or signed short int | 8-bits Or 1-bytes | -128 to 127 |
unsigned short int | 8-bits Or 1-bytes | 0 to 255 |
long int or signed long int | 32-bits Or 4-bytes | -2,147,483,648 to 2,147,483,647 |
unsigned long int | 32-bits Or 4-bytes | 0 to 4,294,967,295 |
Character Data Type
एकल वर्ण या कैरेक्टर को कैरेक्टर प्रकार डेटा के रूप में परिभाषित किया जा सकता है। कैरेक्टर आमतौर पर आंतरिक भंडारण के 8-bits में संग्रहीत होते हैं।
<> Code Example;
char test = 'h';
क्वालीफायर हस्ताक्षरित ( signed ) या अहस्ताक्षरित ( unsigned ) स्पष्ट रूप से char पर लागू किया जा सकता है। जबकि अहस्ताक्षरित ( unsigned ) वर्णों या कैरेक्टर्स का मान 0 और 255 के बीच होता है, हस्ताक्षरित ( signed ) वर्णों या कैरेक्टर्स का मान -128 से 127 तक होता है।
Floating-Point Data Type

फ़्लोटिंग-पॉइंट नंबर 32-bits में 6 अंकों की सटीकता के साथ संग्रहीत किए जाते हैं। फ़्लोटिंग-पॉइंट नंबर C में कीवर्ड float द्वारा परिभाषित किए जाते हैं। जब float नंबर द्वारा प्रदान की गई सटीकता पर्याप्त नहीं होती है, तो संख्या को परिभाषित करने के लिए डबल डेटा टाइप का उपयोग किया जा सकता है।
Double-Point Data Type
एक डबल-पॉइंट डेटा प्रकार संख्या 64-bits का उपयोग करती है, जो 14 अंकों की सटीकता प्रदान करती है। इन्हें डबल प्रिसिजन नंबर ( Double Precision Number ) के रूप में जाना जाता है।
याद रखें कि double प्रकार उसी डेटा प्रकार का प्रतिनिधित्व करता है,जो float का प्रतिनिधित्व करता है लेकिन अधिक सटीकता के साथ। सटीकता को और आगे बढ़ाने के लिए, हम long double का उपयोग कर सकते हैं, जो 80-bits का उपयोग करता है।
यहां एक तालिका हैं, जिसमें त्वरित पहुंच (quick access) के लिए सी प्रोग्रामिंग में आमतौर पर उपयोग किए जानें वाले प्रकार हैं। निम्न तालिका सबसे सामान्य कार्यान्वयन ( Implementations ) पर प्रकार-विनिर्देशकों ( Type-Specifiers ) के आकार और श्रेणी को दर्शाती है;
Data Types | Sizes ( In Bits, Bytes ) | Format Specifiers | Data Value Range |
int | 16-bits Or 2-bytes | %d, %i | -32,768 to 32,767 |
char or signed char | 8-bits Or 1 byte | %c | -128 to 127 |
float | 32-bits Or 4 bytes | %f | 3.4E-38 TO 3.4E+38 |
double | 64-bits Or 8 bytes | %lf | 1.7E-308 TO 1.7E+308 |
short int or signed short int | 8-bits Or 1 bytes | %hd | -128 to 127 |
unsigned short int | 8-bits Or 1 bytes | | 0 to 255 |
unsigned int | 16-bits Or 2-bytes | %u | 0 to 65535 |
long int | 32-bits Or 4-bytes | %ld, %li | -2,147,483,648 to 2,147,483,647 |
long long int | 64-bits Or 8-bytes | %lld, %lli | |
unsigned long int | 32-bits Or 4-bytes | %ul | 0 to 4294967295 |
unsigned long long int | 64-bits Or 8-bytes | %llu | |
unsigned char | 1-byte | %c | 0 to 255 |
long double | 80-bits Or 10-bytes | %lf | 3.4E-4932 TO 1.1E+4932 |
The Sizes & Ranges For Each Of C's Data Types In Our System ( हमारे सिस्टम में C के प्रत्येक डेटा प्रकार के लिए आकार और श्रेणियां )
<> Code Example :
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
int main( void )
{
printf("Sizes Of All C Data Types:\n\n");
printf("Type Bytes\n\n");
printf("char %lu\n", sizeof(char));
printf("int8_t %lu\n", sizeof( int8_t ));
printf("unsigned char %lu\n", sizeof(unsigned char));
printf("uint8_t %lu\n", sizeof( uint8_t ));
printf("short %lu\n", sizeof( short ));
printf("int16_t %lu\n", sizeof( int16_t ));
printf("uint16t %lu\n", sizeof( uint16_t ));
printf("int %lu\n", sizeof(int));
printf("unsigned %lu\n", sizeof(unsigned));
printf("long %lu\n", sizeof( long ));
printf("unsigned long %lu\n", sizeof(unsigned long ));
printf("int32_t %lu\n", sizeof( int32_t ));
printf("uint32_t %lu\n", sizeof( uint32_t ));
printf("long long %lu\n", sizeof( long long ));
printf("int64_t %lu\n", sizeof( int64_t ));
printf("unsigned long long %lu\n", sizeof(unsigned long long ));
printf("uint64_t %lu\n", sizeof( uint64_t ));
printf("float %lu\n", sizeof(float));
printf("double %lu\n", sizeof(double));
printf("long double %lu\n", sizeof( long double));
printf("_Bool %lu\n", sizeof( _Bool ));
printf("\n");
return 0;
}
♻ This Program Output Is :
Sizes Of All C Data Types:
Type Bytes
char 1
int8_t 1
unsigned char 1
uint8_t 1
short 2
int16_t 2
uint16t 2
int 4
unsigned 4
long 4
unsigned long 4
int32_t 4
uint32_t 4
long long 8
int64_t 8
unsigned long long 8
uint64_t 8
float 4
double 8
long double 12
_Bool 1
📝Note:- C 99 में तीन और डेटा प्रकार जोड़े गए हैं;
_Bool
_Complex
_Imaginary
02. Derived Data Types ( व्युत्पन्न डेटा प्रकार )
सी तीन व्युत्पन्न डेटा प्रकारों का समर्थन करता है;
Arrays Data Type
References Data Type
Pointers Data Type
i}. Arrays Data Type
एरेज़ सजातीय मूल्यों वाले डेटा आइटम के अनुक्रम हैं। मूल्यों को संग्रहीत करने के लिए उनके पास आसन्न मेमोरी ( Adjacent Memory ) स्थान या लोकेशन हैं।
ii}. References Data Type
फ़ंक्शन पॉइंटर्स किसी विशेष हस्ताक्षर ( Signature ) के साथ फ़ंक्शन को संदर्भित करने की अनुमति देते हैं।
iii}. Pointers Data Type
ये शक्तिशाली सी विशेषताएं हैं जिनका उपयोग मेमोरी तक पहुंचने और उनके पते ( Addresses ) से निपटने ( Deal ) के लिए किया जाता है। किसी भी अन्य भाषा के समान, सी में ऐरे एक ही डेटा प्रकार के कई मानों को संग्रहीत करता है। इसका मतलब है कि हमारे पास int, char, float, double, आदि की एक ऐरे हो सकती है।
int numbers[] = ;
double marks[7];
float interest[5] = ;
ऐरे को या तो आरंभीकृत ( Initialized ) करने की आवश्यकता होती है, या घोषणा ( Declaration ) के दौरान आकार को निर्दिष्ट करने की आवश्यकता होती है।
03. User-Defined Data Types ( उपयोगकर्ता-परिभाषित डेटा प्रकार )
सी डेटा टाइप डेफिनिशन नामक सुविधा की अनुमति देता है, जो प्रोग्रामर को अपने पहचानकर्ता ( Identifier ) को परिभाषित करने की अनुमति देता है जो मौजूदा डेटा प्रकार का प्रतिनिधित्व करेगा। ऐसे तीन प्रकार हैं;
Structure Data Type
Union Data Type
Enum Data Type
i}. Structure Data Type
यह एक ही नाम के तहत विभिन्न प्रकार के चरों ( वेरिएबल्स ) का एक पैकेज है। यह डेटा को कुशलता ( Efficiently ) से संभालने के लिए किया जाता है। संरचना को परिभाषित करने के लिए "struct" कीवर्ड का उपयोग किया जाता है।
ii}. Union Data Type
ये विभिन्न डेटा प्रकारों ( Various Data Types ) को एक ही मेमोरी लोकेशन में स्टोर करने की अनुमति देते हैं। प्रोग्रामर विभिन्न सदस्यों ( Members ) के साथ एक union को परिभाषित कर सकते हैं, लेकिन एक निश्चित समय में केवल एक सदस्य ( Member ) में एक वैल्यू हो सकता है।
iii}. Enum Data Type
Enumeration एक विशेष डेटा प्रकार है, जिसमें अभिन्न स्थिरांक ( Integral Constants ) होते हैं, और उनमें से प्रत्येक को एक विशिष्ट नाम दिया जाता है। "enum" कीवर्ड का उपयोग एन्यूमरेटेड डेटा प्रकार ( Enumerated Data Type ) को परिभाषित करने के लिए किया जाता है। इसे निम्नानुसार परिभाषित किया गया है;
enum identifier { value1, value2, value3,..........., value n};
What happens If The Value Is Out Of Range? ( यदि मान सीमा से बाहर है तो क्या होगा?)
ठीक है, यदि आप किसी डेटाटाइप को मान निर्दिष्ट करने का प्रयास करते हैं जो कि मान की अनुमत सीमा से अधिक है, तो C भाषा संकलक एक त्रुटि ( Error ) देगा। इसे दिखाने के लिए यहां एक सरल कोड उदाहरण दिया गया है;
<> Code Example:
#include <stdio.h>
int main()
{
// allowed value up to 65535
unsigned short int x = 65536;
return 0;
}
♻ This Program Output Is:
warning: large integer implicitly truncated to unsigned type [-Woverflow] unsigned
short int x = 65536;
📝Note:- जब किसी प्रकार के संशोधक का उपयोग बिना किसी डेटा प्रकार के किया जाता है, तो int डेटा प्रकार को डिफ़ॉल्ट डेटा प्रकार के रूप में सेट किया जाता है। तो, अहस्ताक्षरित का अर्थ है अहस्ताक्षरित int, हस्ताक्षरित का अर्थ है हस्ताक्षरित int, long का अर्थ है long int, और छोटा का अर्थ है short int
What Does Signed & Unsigned Means? ( हस्ताक्षरित और अहस्ताक्षरित का क्या अर्थ है? )
यह समझाने में थोड़ा मुश्किल है, लेकिन आइए कोशिश करते हैं।
सरल शब्दों में, अहस्ताक्षरित संशोधक का अर्थ है, सभी सकारात्मक मान, जबकि हस्ताक्षरित संशोधक का अर्थ सकारात्मक और नकारात्मक दोनों मान है।
जब कंपाइलर को एक संख्यात्मक मान मिलता है, तो वह उस मान को बाइनरी नंबर में बदल देता है, जिसका अर्थ है 0 और 1 का संयोजन। उदाहरण के लिए, 32767 बाइनरी में 01111111 11111111 है, और बाइनरी में 1 01 ( या 0001 ) है, 2 0010 है और इसी तरह।
एक हस्ताक्षरित पूर्णांक के मामले में, उच्चतम क्रम बिट या बाएं से पहला अंक ( बाइनरी में ) साइन फ्लैग के रूप में उपयोग किया जाता है। यदि साइन फ्लैग 0 है, तो संख्या धनात्मक है, और यदि यह 1 है, तो संख्या ऋणात्मक है।
और क्योंकि एक बिट का उपयोग यह दिखाने के लिए किया जाता है कि संख्या धनात्मक है या ऋणात्मक है, इसलिए संख्या का प्रतिनिधित्व करने के लिए एक कम बिट है, इसलिए सीमा कम है।
हस्ताक्षरित int के लिए, 11111111 11111111 का अर्थ -32,767 है और क्योंकि पहला बिट एक नकारात्मक संख्या के रूप में चिह्नित करने के लिए एक संकेत ध्वज ( साइन फ्लैग ) है, और बाकी संख्या का प्रतिनिधित्व करते हैं। जबकि अहस्ताक्षरित इंट के मामले में 11111111 11111111 का मतलब 65,535 है।
Comments