Type Casting in C Programming in Hindi

इस tutorial में हम C Programming में Data Type Casting के बारे में बात करेंगे. इसके साथ ही हम implicit type casting और explicit type casting में क्या अंतर होता है ये भी समझेंगे.

हम अपनी real life में बहुत सारी चीजों को अपनी जरुरत के हिसाब से एक type से दूसरे type में change (cast) करते हैं जैसे पानी को बर्फ में, दूध को दही में इत्यादि. 

ऐसे ही C programming में हमें कभी-कभी एक data type की value को दूसरे data type की value में change (cast) करना होता है और इस process को ही हम type casting कहते हैं.

Type casting में हम ज्यादातर अपने programs में एक data type की value को दूसरे data type की value में cast करके उसे changed type के variable में assign करते हैं.

Type casting को हम type conversion भी कहते हैं. C programming में two types की type casting होती हैं Implicit और Explicit. आइए दोनों types को एक-एक करके समझते हैं.

Implicit Type Casting (Automatic Conversion)

जैसा की हमने ऊपर पढ़ा की type casting में हम 2 तरह के data types के साथ work करते हैं यानी हम एक data type की value को दूसरे data type के variable में assign करते हैं.

अगर दोनों data type एक दूसरे से compatible होते हैं और जिस data type की value को assign करना है उसका memory size जिस data type के variable में assign करना है उससे कम या बराबर होता है तो compiler द्वारा automatic type conversion कर दिया जाता है जिसे हम implicit type casting भी कहते हैं.

नीचे इमेज में smallest to largest data type order दिया है और implicit type casting भी इसी order के assignment के समय work करती है.

Implicit Type Casting in C language

ज्यादातर programming languages में जब हम implicit type casting करते तब जिस data type की value को आप cast कर रहें हैं उस value में से किसी भी तरह का data lost (truncated) नहीं होता है.

लेकिन C programming में implicit conversions में भी data lost हो सकता है जैसे जब आप signed data type को unsigned में cast करें. 

इसके अलावा जब आप long data की value को float में cast किया जाए तब भी overflow की वजह से data lost हो सकता है. आइये अब implicit type casting को example के साथ समझते हैं.

Implicit Type Casting Example:

#include <stdio.h>
int main()
{
	short a=10;
	int b,x;
	char ch='A';

	//implicit type casting
	b=a;
	x=ch;

	printf("Value of A : %d\n",a);
	printf("Value of B : %d\n",b);
	printf("Value of X : %d\n",x);

    return 0;
}

Output:

Value of A : 10
Value of B : 10
Value of X : 65

Explanation:

अब जैसा की हम C Data Types वाले tutorial में पढ़ चुके हैं short data type का memory occupied size int data type का memory occupied size से कम होता है.

इसलिए Line 9 पर compiler द्वारा implicit type casting कर दी जाएगी और किसी तरह का data भी lost नहीं होगा.

ठीक ऐसे ही Line 10 पर जब char data type की value ‘A’ को जब int data type के variable में assign किया जाएगा तब compiler automatically ‘A’ की ASCII value 65 को int variable में assign कर देगा.

Explicit Type Casting (Narrowing Conversion)

जब हम किसी ऐसे data type की value जो ज्यादा memory occupied करती है उस data type के variable से जिसमें उस value को assign किया जा रहा होता है तब हम explicit type casting का use करते हैं.

Explicit type casting programmer द्वारा perform की जाती है. नीचे इमेज में largest to smallest data type order दिया है और explicit type casting का use भी हम इसी order के assignment में करते हैं.

Explicit Type Casting in C

आइये अब हम explicit type casting का syntax देखते हैं और उसके बाद examples के साथ समझते हैं की C programming में explicit type casting की जरुरत क्यों होती है.

Explicit Type Casting Syntax:

variable = (data_type) variable/value/expression;

variable, value या expression को हम cast करके variable में assign करेंगे लेकिन उससे पहले हमें parenthesis ( ) में वो data type लिखना है जिस type के variable में हम assign कर रहे हैं.

Explicit Type Casting Example Program 1:

#include<stdio.h>
int main()
{
    int n;
    float x;

    x=20.75;

    n=(int)x;

    printf("Value of X : %f\n",x);
    printf("Value of N : %d\n",n);

    return 0;
}

Output:

Value of X : 20.75
Value of N : 20

Note: C programming में explicit conversions में भी data lost हो सकता है जैसे जब आप float data type को int में cast करेंगे तब decimal part lost हो जाएगा.

Explicit Type Casting Example Program 2:

#include <stdio.h>
int main()
{
	int m1,m2,m3;
	float avg;

	m1=88;
	m2=93;
	m3=79;

	avg=(m1+m2+m3)/3;

	printf("Marks Average : %f",avg);

    return 0;
}

Output:

Marks Average : 86.000000

Explanation:

अगर आप अपने calculator से variables m1, m2 और m3 का addition करके उसमें number 3 से divide करेंगे तो आपको average के तौर पर 86.666664 output मिलेगा.

लेकिन अगर आप ऊपर example का output देखें तो वो 86.000000 है यानी point के बाद वाली decimal value avg variable में hold नहीं हुई.

क्योंकि इससे फर्क नहीं पड़ता की आप value किस data type के variable में assign कर रहे हो. फर्क इससे पड़ता है की assignment operator से पहले कौन सा data type use हुआ है.

अगर आप line 11 पर explicit type casting का use करते तो avg variable में 86.666664 value assign और output होती.

avg=(float)(m1+m2+m3)/3;

What’s Next: इस tutorial में हमने C Type Casting के बारे में पढ़ा. Next tutorial में हम C programming में if else conditional statement का use करना सीखेंगे.