راز عملگرهای حسابی با تایپهای کوچک!
همه ما با عملگرهای حسابی مثل + و * آشناییم. ولی آیا میدونستید یه نکتهی جالب و مهم در موردشون موقع کار با تایپهای کوچیکی مثل byte و short وجود داره؟
فرض کنید میخواید دو تا byte رو با هم جمع کنید. چه اتفاقی میفته؟
byte b1 = 10;
byte b2 = 20;
// انتظار داریم این کد کار کنه، ولی...
// ❌ این خط کامپایل نمیشه!
byte result = b1 + b2;
چرا خطا میده؟
چون در #C، وقتی عملیات حسابی روی تایپهای کوچکتر از int (مثل byte یا short) انجام میشه، اونها اول به صورت خودکار به int تبدیل میشن و حاصل عملیات هم یک int خواهد بود!
بنابراین، کد صحیح این شکلیه:
// ✅ درسته! حاصل جمع دو بایت، یک int است.
int result = b1 + b2;
دلیل این کار چیه؟
این رفتار برای بهینهسازی و سادگی در سطح پردازنده و CLR طراحی شده. کار کردن با int (که معمولاً اندازه کلمه پردازنده است) سریعتر و بهینهتره.
حالا اگه حتماً نتیجه رو تو یه byte میخواید چی؟
باید خودتون صراحتاً نتیجه رو کست کنید (و البته حواستون به سرریز شدن یا Overflow باشه!):
// ✅ درسته (با مسئولیت خودتان!)
byte result = (byte)(b1 + b2);
حرف آخر: یادتون باشه، حاصل عملیات حسابی روی تایپهای کوچیک، همیشه یه intئه! دونستن همین نکته کوچیک، جلوی خیلی از خطاهای کامپایل ناگهانی رو میگیره.
🔖 هشتگها :
#CSharp
#QuickTip