টাইপ কাস্টিং হলো একটি ভেরিয়েবলকে একটি ডেটা টাইপ থেকে অন্য ডেটা টাইপে কনভার্ট করার পদ্ধতি। উদাহরণস্বরূপ, 'long' ভ্যালু 'int'-এ সংরক্ষণ করতে চাইলে 'long'-কে 'int'-এ টাইপ কাস্ট করতে পারেন। কাস্ট অপারেটর ব্যবহার করে eksplisittype conversion করা যায়:
(type_name) expression
নিচের উদাহরণে কাস্ট অপারেটর দিয়ে দুটি ইন্টিজার ভেরিয়েবলের ভাগ ফ্লোটিং-পয়েন্ট অপারেশন হিসেবে করা হয়েছে।
উদাহরণ
#include <stdio.h>
int main() {
int sum = 17, count = 5;
double mean;
mean = (double) sum / count;
printf("Value of mean : %f\n", mean);
return 0;
}
আউটপুট
Value of mean : 3.400000
কাস্ট অপারেটরের প্রসিডেন্স ডিভিশনের চেয়ে বেশি, তাই sum প্রথমে double-এ কনভার্ট হয়, তারপর count দিয়ে ভাগ হয় এবং double ফলাফল আসে।
টাইপ কনভারশন ইমপ্লিসিট (কম্পাইলার স্বয়ংক্রিয়ভাবে) বা এক্সপ্লিসিট (কাস্ট অপারেটর দিয়ে) হতে পারে। টাইপ কনভারশন জরুরি হলে কাস্ট অপারেটর ব্যবহার করা ভালো প্র্যাকটিস।
ইন্টিজার প্রোমোশন (Integer Promotion)
int বা unsigned int-से ছোট ইন্টিজার টাইপের ভ্যালু int বা unsigned int-এ কনভার্ট হয়। উদাহরণ: ক্যারেক্টার এবং ইন্টিজার যোগ।
উদাহরণ
#include <stdio.h>
int main() {
int i = 17;
char c = 'c'; /* ascii value 99 */
int sum;
sum = i + c;
printf("Value of sum : %d\n", sum);
return 0;
}
আউটপুট
Value of sum : 116
এখানে 'c'-র ASCII ভ্যালু ৯৯, তাই ১৭+৯৯=১১৬। কম্পাইলার ইন্টিজার প্রোমোশন করে 'c'-কে ইন্টিজারে কনভার্ট করে যোগ করে।
ইউজুয়াল আরিথমেটিক কনভারশন (Usual Arithmetic Conversion)
সাধারণ আর্থমেটিক কনভারশন ইমপ্লিসিটলি অপারেন্ডগুলোর টাইপ একটি কমন টাইপে কনভার্ট করে। কম্পাইলার প্রথমে ইন্টিজার প্রোমোশন করে; যদি টাইপ এখনো ভিন্ন থাকে, তবে নিচের হায়ারার্কি অনুযায়ী সর্বোচ্চ টাইপে কনভার্ট করে:

এসাইনমেন্ট অপারেটর এবং লজিক্যাল অপারেটর (&&, ||) এর জন্য এই কনভারশন হয় না।
উদাহরণ
#include <stdio.h>
int main() {
int i = 17;
char c = 'c'; /* ascii 99 */
float sum;
sum = i + c;
printf("Value of sum : %f\n", sum);
return 0;
}
আউটপুট
Value of sum : 116.000000
এখানে প্রথমে c ইন্টিজারে কনভার্ট হয়, তারপর ফাইনাল রেজাল্ট float হলে usual arithmetic conversion প্রয়োগ হয় এবং i ও c float-এ কনভার্ট হয়ে যোগ হয়।