با سلام خدمت تمامی دوستان عزیز سایت پی وی لرن .و کاربرانی که دوره کامل آموزش زبان C را دنبال می کنند. و کاربرانی که با سری آموزش های زبان C همراهمون هستند. در این جلسه قصدداریم تبدیل نوع در زبان C و انواعش ،Integer Promotion و تبدیلات ریاضی رایج در C رو بیان خواهیم کرد .
تبدیل نوع (type casting) راهی برای تغییر نوع داده یک متغیر به نوع داده دیگر است.
به عنوان نمونه، شما می توانید یک مقداری که از نوع long است را به نوع int و بالعکس تبدیل کنید. شما می توانید مقادیر را از یک نوع به نوع دیگری به طور صریح با استفاده از عملگر تبدیل نوع تبدیل کنید.
همانند مثال زیر:
1 | (type_name) expression |
1 2 3 4 5 6 7 8 9 10 | #include <stdio.h> main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean ); } |
زمانی که کد بالا توسط C کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 | Value of mean : 3.400000 |
تبدیل نوع داده در زبان C به دو صورت ضمنی و صریح انجام شود.
در نوع اول عمل تبدیل نوع به صورت خودکار با کامپایلر انجام می دهد. برای نمونه نیازی نیست برای قرار دادن مقدار int در long از عملگر تبدیل نوع استفاده کنیم.
در نوع دوم کامپایلر این کار را به صورت خودکار انجام نمی دهد به دلیل این که در تبدیل صریع ممکن است بخشی از مقداری که می خواهیم تبدیل کنیم از بین برود، به همین دلیل ما باید خودمان با استفاده از عملگر cast آن را انجام دهیم. برای نمونه زمانی که می خواهید یک مقدار float را در int ذخیره کنید، بخش اعشاری float از بین می رود.
Integer Promotion، فرایندی است که برخی از انواع داده مانند char، short که تعداد بایت کمتری از int می گیرند، هنگامی که بر روی آن ها عملیات انجام می شود به صورت خود کار به نوع داده int و یا unsigned int تبدیل می شود.. در زیر یک نمونه ای از تبدیل نوع Char به int را خواهیم دید.
1 2 3 4 5 6 7 8 9 10 11 | <span class="com">#include</span> <span class="str"><stdio.h></span><span class="pln"> main</span><span class="pun">()</span> <span class="pun">{</span> <span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span> <span class="lit">17</span><span class="pun">;</span> <span class="kwd">char</span><span class="pln"> c </span><span class="pun">=</span> <span class="str">'c'</span><span class="pun">;</span> <span class="com">/* ascii value is 99 */</span> <span class="kwd">int</span><span class="pln"> sum</span><span class="pun">;</span><span class="pln"> sum </span><span class="pun">=</span><span class="pln"> i </span><span class="pun">+</span><span class="pln"> c</span><span class="pun">;</span><span class="pln"> printf</span><span class="pun">(</span><span class="str">"Value of sum : %d\n"</span><span class="pun">,</span><span class="pln"> sum </span><span class="pun">);</span> <span class="pun">}</span> |
زمانی که کد بالا توسط C کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 | Value of sum : 116 |
نتیجه جمع دو متغیر ۱۱۶ شده است. بخاطر این که کامپایلر قبل از انجام عمل جمع ،Integer Promotion و تبدیل ‘c’ به ASCII را انجام می دهد.
متغیر c را که از نوع char می باشد به نوع int تبدیل می کند.
تبدیلات ریاضی رایج به طور ضمنی انجام می شود تا مقادیر خود را به یک نوع معمول تبدیل کنند.
کامپایلر ابتدا performs integer promotion-ارتقاء integer را انجام می دهد. اگر عملوندها هنوز انواع مختلفی داشته باشند، آنها به نوعی که در سلسله مراتب زیر مشخص شده تبدیل می شوند.
تبدیلات ریاضی رایج در C برای عملگرهای محاسباتی و عملگرهای منطقی && و || انجام نمی شود.
برای درک بهتر به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> main() { int i = 17; char c = 'c'; /* ascii value is 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum ); } |
زمانی که کد بالا توسط C کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 | Value of sum : 116.000000 |
تبدیل نوع در زبان C و انواعش ،Integer Promotion و تبدیلات ریاضی رایج در C رو به اتمام میرسونیم ،
در ادامه جلسات به مدیریت خطا در زبان C خواهیم پرداخت .