مفهوم کلی Type Conversion
در زبان C، هر متغیر و عبارت دارای نوع دادهای مشخص است که تعیین میکند چه مقدارهایی میتواند ذخیره کند و چه عملیاتی روی آن مجاز است. گاهی اوقات نیاز است یک مقدار از یک نوع به نوع دیگر تبدیل شود تا بتوان از آن در یک زمینهی خاص استفاده کرد.
انواع مختلف داده در C دارای اندازه و محدودهی متفاوت هستند:
| نوع داده | اندازه (بایت) | محدوده |
|---|---|---|
char | ۱ | ۱۲۷- تا ۱۲۷+ |
int | ۴ | ۲,۱۴۷,۴۸۳,۶۴۷- تا ۲,۱۴۷,۴۸۳,۶۴۷+ |
float | ۴ | ۳.۴E+۳۸ تا ۱.۲E-۳۸± |
double | ۸ | ۱.۷E+۳۰۸ تا ۲.۳E-۳۰۸± |
تبدیل نوع داده به دو دستهی کلی تقسیم میشود:
| نوع تبدیل | توضیح |
|---|---|
| تبدیل ضمنی (Implicit) | توسط کامپایلر بهصورت خودکار انجام میشود |
| تبدیل صریح (Explicit) | توسط برنامهنویس با استفاده از عملگر cast انجام میشود |
چرا به تبدیل نوع داده نیاز داریم؟
۱. انجام عملیات بین انواع مختلف:
int a = 10; double b = 3.5; double result = a + b; // int به double تبدیل میشود تا جمع امکانپذیر شود
۲. جلوگیری از از دست رفتن داده:
int x = 10, y = 3; float result = (float)x / y; // تبدیل به float برای حفظ دقت
۳. سازگاری با توابع و کتابخانهها:
#include <math.h> double x = 3.14; int y = (int)floor(x); // تبدیل double به int برای استفاده از نتیجه
۴. نمایش دادهها در خروجی:
int num = 65; printf("%c\n", (char)num); // چاپ 'A' با تبدیل int به char
اصول مهم در تبدیل نوع داده
۱. تبدیل به نوع بزرگتر (Widening Conversion):
تبدیل از نوع کوچکتر به نوع بزرگتر ایمن است و داده از دست نمیرود.
| از | به | ایمنی |
|---|---|---|
char | int | ایمن |
int | float | احتمال کاهش دقت |
int | double | ایمن |
float | double | ایمن |
۲. تبدیل به نوع کوچکتر (Narrowing Conversion):
تبدیل از نوع بزرگتر به نوع کوچکتر خطرناک است و ممکن است داده از دست برود.
| از | به | خطر |
|---|---|---|
double | int | از دست رفتن قسمت اعشار |
int | char | از دست رفتن بیتهای بالا |
long | int | سرریز (Overflow) |
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات