'C' कंपाइलर्स चार मौलिक डेटा टाइप्स का समर्थन करते हैं:
- इंटीजर (Integer)
- कैरेक्टर (Character)
- फ्लोटिंग-पॉइंट (Floating-point)
- डबल प्रिसिजन फ्लोटिंग-पॉइंट (Double precision floating-point)
प्राथमिक डेटा टाइप्स
इंटीग्रल डेटा टाइप (Integral Data Type)
इंटीग्रल डेटा टाइप्स पूरे नंबर और कैरेक्टर्स स्टोर करने के लिए उपयोग किए जाते हैं।
ये दो प्रकारों में वर्गीकृत हैं:
- इंटीजर डेटा टाइप
- कैरेक्टर डेटा टाइप
इंटीजर डेटा टाइप
यह डेटा टाइप पूरे नंबर स्टोर करने के लिए उपयोग किया जाता है।
इंटीजर स्टोरेज हैं: शॉर्ट इंट, इंट, और लॉन्ग इंट - साइन्ड और अनसाइन्ड दोनों रूपों में।
| प्रकार | आकार (बाइट्स) | रेंज | कंट्रोल स्ट्रिंग |
|---|---|---|---|
| short int (या signed short int) | 2* | -32,768 से 32,767 | %hd |
| unsigned short int | 2* | 0 से 65,535 | %hu |
| int (या signed int) | 4* | -2,147,483,648 से 2,147,483,647 | %d या %i |
| unsigned int | 4* | 0 से 4,294,967,295 | %u |
| long int (या signed long int) | 4/8* | -2^31 से 2^31-1 (32-बिट) या -2^63 से 2^63-1 (64-बिट) | %ld |
| unsigned long int | 4/8* | 0 से 2^32-1 (32-बिट) या 0 से 2^64-1 (64-बिट) | %lu |
| long long int (C99) | 8* | -2^63 से 2^63-1 | %lld |
| unsigned long long int | 8* | 0 से 2^64-1 | %llu |
* आकार कार्यान्वयन-निर्भर है; ऊपर दिखाए गए मान सामान्य 32/64-बिट सिस्टम्स के लिए विशिष्ट हैं।
कैरेक्टर डेटा टाइप
कैरेक्टर डेटा टाइप केवल कैरेक्टर्स स्टोर करने के लिए उपयोग किया जाता है।
ये कैरेक्टर्स आंतरिक रूप से इंटीजर्स के रूप में संग्रहीत होते हैं।
प्रत्येक कैरेक्टर का एक समतुल्य ASCII मान होता है।
उदाहरण: 'A' का ASCII मान 65 है।
| प्रकार | आकार (बाइट्स) | रेंज | कंट्रोल स्ट्रिंग |
|---|---|---|---|
| char (या signed char) | 1 | -128 से 127 | %c (कैरेक्टर), %hhd (इंटीजर) |
| unsigned char | 1 | 0 से 255 | %c (कैरेक्टर), %hhu (इंटीजर) |
फ्लोटिंग-पॉइंट डेटा टाइप
फ्लोटिंग पॉइंट डेटा टाइप्स वास्तविक संख्याओं को स्टोर करने के लिए उपयोग किए जाते हैं।
float- 6 अंकों की सटीकता के लिए उपयोग किया जाता हैdouble- 12-15 अंकों की सटीकता के लिए उपयोग किया जाता हैlong double- 15+ अंकों की सटीकता के लिए उपयोग किया जाता है
| प्रकार | आकार (बाइट्स) | रेंज (सन्निकट) | कंट्रोल स्ट्रिंग |
|---|---|---|---|
| float | 4 | ±1.2×10⁻³⁸ से ±3.4×10³⁸ | %f, %e, %g |
| double | 8 | ±2.3×10⁻³⁰⁸ से ±1.7×10³⁰⁸ | %lf, %le, %lg |
| long double | 12/16 | ±3.4×10⁻⁴⁹³² से ±1.1×10⁴⁹³² | %Lf, %Le, %Lg |
आधुनिक C (C99/C11) फिक्स्ड-विड्थ टाइप्स (<stdint.h>)
| टाइप | विवरण |
|---|---|
| int8_t, uint8_t | सटीक 8-बिट साइन्ड/अनसाइन्ड |
| int16_t, uint16_t | सटीक 16-बिट |
| int32_t, uint32_t | सटीक 32-बिट |
| int64_t, uint64_t | सटीक 64-बिट |
| intptr_t, uintptr_t | पॉइंटर रखने के लिए पर्याप्त बड़ा |
| intmax_t, uintmax_t | अधिकतम चौड़ाई |
sizeof ऑपरेटर
किसी भी टाइप या वेरिएबल का आकार बाइट्स में प्राप्त करने के लिए:
printf("Size of int: %zu bytes\n", sizeof(int));
printf("Size of float: %zu bytes\n", sizeof(float));
printf("Size of double: %zu bytes\n", sizeof(double));
printf("Size of char: %zu byte\n", sizeof(char));
मुख्य बिंदु
- आकार और रेंज कार्यान्वयन-निर्भर हैं (आर्किटेक्चर और कंपाइलर पर निर्भर)।
- पोर्टेबल कोड के लिए
<stdint.h>फिक्स्ड-विड्थ टाइप्स का उपयोग करें। charसाइन्ड या अनसाइन्ड हो सकता है (कार्यान्वयन-निर्भर)।- फ्लोटिंग-पॉइंट IEEE 754 फॉर्मेट का पालन करता है।
- सही फॉर्मेट स्पेसिफायर का उपयोग करें (
%zuforsize_t,%lldforlong long)।