تبدیل نوع (Casting) در C
تبدیل صریح و ضمنی انواع داده به هم در C و کاربردهای آن
تبدیل نوع چیست؟
گاهی لازم است مقدار یک نوع داده را به نوع دیگری تبدیل کنیم. به این کار Casting میگویند.
تبدیل ضمنی (Implicit)
کامپایلر خودش بهطور خودکار انواع سازگار را تبدیل میکند:
// int به float تبدیل میشود بهطور خودکار
int x = 5;
float y = x + 1.5; // x به 5.0 تبدیل و نتیجه 6.5
تبدیل صریح (Explicit)
شما خودتان با نوشتن نوع داخل پرانتز، تبدیل را اجباری میکنید:
(type) value
float avg = (float) sum / count;
مثال معروف: تقسیم صحیح
int a = 7, b = 2;
float r1 = a / b; // 3.0 — اول تقسیم صحیح انجام شد!
float r2 = (float)a / b; // 3.5 — a اول به float تبدیل شد
این مثال نشان میدهد casting چقدر مهم است!
تبدیل به char
چون char عدد است، میتوان بین char و int تبدیل کرد:
int code = 65;
char letter = (char)code; // \x27A\x27
char c = \x27Z\x27;
int num = (int)c; // 90
تبدیل با کاهش دقت
وقتی از نوع بزرگتر به کوچکتر تبدیل میکنید، ممکن است داده از دست برود:
double pi = 3.14159;
int truncated = (int)pi; // 3 — بخش اعشاری حذف شد
قواعد تبدیل خودکار
وقتی دو نوع مختلف در یک عبارت باشند، کامپایلر نوع کوچکتر را به بزرگتر تبدیل میکند:
char → int → long → float → double
نکات مهم
- تبدیل از اعشاری به صحیح، بخش اعشاری را گرد نمیکند بلکه حذف میکند
- برای گرد کردن از
round()در math.h استفاده کنید - casting مقدار را در متغیر اصلی تغییر نمیدهد؛ فقط برای آن عبارت مؤثر است
این مبحث بخشی از دوره آموزش کامل زبان C است.