अप्रत्यक्ष प्रकार रूपांतरण (Implicit Type Conversion)
जब अलग-अलग डेटा प्रकारों के ऑपरेंड्स किसी ऑपरेशन में होते हैं, तो कंपाइलर स्वतः छोटे प्रकार को बड़े प्रकार में बदल देता है। इसे "प्रकार प्रोमोशन" भी कहते हैं।
ASCII मान ज्ञात करना
वर्ण 'A' का ASCII मान 65 है। char को int में जोड़ने पर char प्रोमोट होकर int बन जाता है।
उदाहरण प्रोग्राम
#include <stdio.h>
int main() {
char character = 'A';
int number = 0;
int value;
// अप्रत्यक्ष रूपांतरण: char → int
value = character + number;
printf("'%c' का ASCII मान: %d\n", character, value);
return 0;
}
आउटपुट
'A' का ASCII मान: 65
चरण-दर-चरण
1. character = 'A' (आंतरिक रूप से 65) 2. number = 0 3. character + number → character प्रोमोट होकर int (65) बनता है → 65 + 0 = 65 4. value = 65
दूसरा उदाहरण: 'P' का ASCII
char character = 'P';
int number = 0;
int value = character + number;
printf("'%c' का ASCII मान: %d\n", character, value);
आउटपुट: 'P' का ASCII मान: 80
प्रकार प्रोमोशन नियम (Integer Promotions)
| मूल प्रकार | प्रोमोट होता है |
|---|---|
char, signed char, unsigned char | int (या unsigned int) |
short, unsigned short | int |
float | double |
int, long, long long | कोई बदलाव नहीं |
सामान्य अंकगणितीय रूपांतरण (Usual Arithmetic Conversions)
दो ऑपरेंड्स के लिए: दोनों को सामान्य प्रकार में लाया जाता है (रैंक: long double > double > float > unsigned long long > ... > int > unsigned int > short > char)
व्यावहारिक उपयोग: वर्ण श्रेणी प्रिंट करना
#include <stdio.h>
int main() {
printf("बड़े अक्षर:\n");
for (int i = 'A'; i <= 'Z'; i++)
printf("%c=%d ", i, i);
printf("\n\nछोटे अक्षर:\n");
for (int i = 'a'; i <= 'z'; i++)
printf("%c=%d ", i, i);
printf("\n\nअंक:\n");
for (int i = '0'; i <= '9'; i++)
printf("%c=%d ", i, i);
return 0;
}
स्पष्ट रूपांतरण (Explicit Conversion / Casting)
char c = 'A';
int ascii = (int)c; // स्पष्ट कास्ट
printf("%d\n", ascii); // 65
दोनों तरीके समान परिणाम देते हैं, लेकिन स्पष्ट कास्ट इरादा दर्शाता है।