تبديل انواع
وقتي كه متغيرهاي با نوع هاي مختلف در يك عبارت با يكديگر تركيب مي شوند
بايد تبديل نوع صورت گيرد . قاعده كلي اين است كه نوع هاي با طول كوچك تر به
نوع هايي با طول بزرگتر تبديل مي شوند . مثلا" اگر دو متغير از نوع كاراكتري و
عددي صحيح با يكديگر تركيب شوند ، نوع كاراكتري به عددي صحيح تبديل مي شود .
مثال 1: char ch;
int i;
float f;
double d;
result =( ch/i )+( f*d( - )f+i)
| | | | | |
int |double | | float
| | | | | |
| | | | | |
ؤؤؤ ؤؤؤ ؤؤؤ | | |
int double float
| | |
| | |
|
ؤؤؤؤؤؤؤؤؤ | |
| |
double |
| |
| |
ؤؤؤؤؤؤؤؤؤؤؤؤؤ |
double
همان طور كه از مثال 1 پيداست ، نوع نتيجه double خواهد بود .
علاوه بر تبديل انواع در عبارات ، در احكام انتساب نيز ممكن است تبديل انواع
صورت گيرد . در تبديل انواع اطلاعاتي از بين مي روند كه بايد در نتيجه حاصل از
احكام انتساب دقت كافي به خرج داد. در ذيل تبديل انواع در احكام انتساب مشاهده
مي شود : int x;
char ch;
float f;
ch= x;
x= f;
f= ch;
f= x;
كليه احكام انتساب فوق قابل انجام بوده و از طرف كامپايلر زبان C هيچ گونه
خطايي گزارش نمي شود . اطلاعاتي كه ممكن است در تبديل انواع از بين بروند . در
جدول (1) آمده است .
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
نوع منبع | نوع مقصد | اطلاعاتي كه ممكن است از بين برود |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| signed char | char اگر مقدار بزرگتر از127 باشد مقصد منفي خواهد شد |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| short 8 | char بيت با ارزش |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| int 8 | char بيت با ارزش |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| long int | char َ24 بيت با ارزش |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| long int | int َ16 بيت با ارزش |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| float | int قسمت كسري يا بيشتر و نتيجه حاصل گرد مي شود |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
| double | float قسمت كسري و يا بيشتر و نتيجه حاصل گرد مي شود |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
جدول (1) . تبديل انواع
دو نكته را بايد در مورد تبديل انواع ( جدول (1) ) به خاطر داشته باشيم : 1
بعضي از تبديل انواع در جدول فوق وجود ندارد مثل doubleبه int . در اين
موارد مي توان double را به float تبديل كرده و سپس float را به int تبديل نمود. 2
وقتي نوع بزرگتري به نوع كوچكتري انتساب داده مي شود . قسمتي از اطلاعات
از دست مي روند . همان طور كه مي دانيم ، معمولا" اعداد صحيح (int) در 2 بايت و
اطلاعات از نوع char در يك بابت ذخيره مي شوند :
ؤؤؤؤؤؤؤؤؤؤؤ char
ؤؤؤؤؤؤؤؤؤؤؤ
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ int
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
بايت كم ارزش بايت باارزش
وقتي يك متغير int به يك متغير char انتساب داده مي شود بايت كم ارزش متغير
از نوع int به متغير char منتقل شده ولي با ارزش متغير int در متغير char جايي ميگوييم در انتساب متغيرintبه char ، 8، بيت با ارزش از دست ميرود