متغیر یا Variable در برنامه نویسی اسمی است که به بخشی از فضای حافظه در برنامه میدهیم تا یک مقدار را در خود نگه دارد. در این بخش به معرفی انواع متغير در ++C و نحوه اعلان یا تعریف آن در برنامهها خواهیم پرداخت. به طور کلی در این آموزش از مجله پی استور انواع عددی صحيح، انواع عددی مميز شناور در ++C، نوع بولين، نوع شمارشی را تشریح و متغيرهايی از اين نوع را در برنامهها استفاده خواهیم کرد.
مقدمه
ما در زندگی روزمره از دادههای مختلفی (اعداد، تصاوير، نوشتهها يا حروف الفبا، صداها، بوها و غیره) استفاده میکنيم. با پردازش اين دادهها میتوانيم تصميماتی اتخاذ کنيم، عکسالعملهايی نشان دهيم و مسئلهای را حل کنيم. کامپیوترها نيز قرار است همين کار را انجام دهند. يعنی دادههايی را بگيرند، آنها را به شکلی که ما تعيين میکنيم پردازش کنند و در نتيجه اطلاعات مورد نيازمان را استخراج کنند. برای اینکه بتوانیم از دادههای مختلف در برنامه نویسی استفاده کنیم باید آن ها را در قالب یک متغیر (جایی که داده ها در آن ذخیره می شوند) قرار دهیم. هر داده نوع متغیر خاص خود را دارد پس باید با انواع متغير در ++C آشنا شویم.
انواع داده عددی
به طور کلی در ++C دو نوع اصلی داده وجود دارد: «نوع صحيح» و «نوع مميز شناور». همۀ انواع ديگر از روی اين دو نوع ساخته می شوند.
نوع صحیح
نوع صحيح برای نگهداری اعداد صحيح (اعداد 0 و 1 و 2 و غیره) استفاده میشود. اين اعداد بيشتر برای شمارش به کار میروند و دامنه محدودی دارند.
متغير عدد صحيح
در ++C شش نوع متغير عدد صحيح وجود دارد تفاوت اين شش نوع مربوط به ميزان حافظه مورد استفاده و محدوده مقاديری است که هر کدام میتوانند داشته باشند. اين ميزان حافظه مورد استفاده و محدوده مقادير، بستگی زيادی به سختافزار و همچنين سيستم عامل دارد. جدول زیر حداقل و حداکثر ظرفیت متغیر ها از نوع صحیح را در ++C نشان میدهد.
| حداکثر ظرفیت پذیرش | حداقل ظرفیت پذیرش | نوع متغیر |
| 32767 | 32768- | short |
| 65535 | 0 | unsigned short |
| 2147483647 | 2147483648- | int |
| 4294967295 | 0 | unsigned int |
| 2147483647 | 2147483648- | long |
| 4294967295 | 0 | unsigned long |
محاسبات اعداد صحيح
++C مانند اغلب زبانهای برنامهنويسی برای محاسبات از عملگرهای جمع (+)، تفريق (-)، ضرب (*)، تقسيم (/) و باقيمانده (%) استفاده میکند.
عملگرهای افزايشی و کاهشی
زبان برنامه نویسی ++C برای دستکاری مقدار متغيرهای صحيح، دو عملگر جالب ديگر دارد:
- عملگر ++: مقدار يک متغير را يک واحد افزايش ميدهد.
- عملگر —: مقدار يک متغير را يک واحد کاهش ميدهد.
اما هر کدام از اين عملگرها دو شکل متفاوت دارند: شکل «پيشوندی» و شکل «پسوندی».
در شکل پیشوندی، عملگر قبل از نام متغير میآيد مثل ++m يا –n. در شکل پسوندی، عملگر بعد از نام متغير میآيد مثل ++m يا –n . در شکل پيشوندی ابتدا متغير، متناسب با عملگر، افزايش يا کاهش میيابد و پس از آن مقدار متغير برای محاسبات ديگر استفاده میشود. در شکل پسوندی ابتدا مقدار متغير در محاسبات به کار میرود و پس از آن مقدار متغير يک واحد افزايش يا کاهش میيابد. به مثال زیر توجه کنید.
int main()
{
int x=10;
int y=10;
cout << "x++ is : " <<x++;
cout<<endl;
cout << "++y is : " <<++y;
return 0;
}
پس از اجرای برنامه بهخوبی متوجه خواهید بود که چه فرقی بین شکل پیشوندی و پسوندی وجود دارد. ما در کد بالا به هر دو متغیر x و y مقدار یکسان 10 را دادهایم. برای چاپ کردن هر کدام ابتدا ++x را چاپ میکنیم. در اینجا عدد 10 برای ما چاپ میشود و سپس 1 واحد x افزایش مییابد. ولی در مورد y ابتدا این متغیر یک واحد افزایش پیدا میکند سپس چاپ میشود یعنی عدد 11.
عملگرهای مقدارگذاری مرکب
در ++C عملگرهای ديگری دارد که مقدارگذاری در متغيرها را تسهيل مینمايند. مثلا با استفاده از عملگر =+ میتوانيم هشت واحد به m اضافه کنيم اما با دستور کوتاهتر:
;m += 8
دستور بالا معادل دستور ;m = m + 8 است با اين تفاوت که کوتاهتر است. به عملگر =+ «عملگر مرکب» میگويند زيرا ترکيبی از عملگرهای + و = ميباشد. قبلاً از عملگر = برای مقدارگذاری در متغيرها استفاده کرديم. ++C عملگرهای ديگری دارد که مقدارگذاری در متغيرها را تسهيل مینمايند. عملگر مرکب در C++ عبارتند از: =+ و =- و =* و =/ و =% که نحوه عملکرد آنها بهصورت زیر است. (معادل هر عبارت)
m += 8; → m = m + 8
m -= 8; → m = m – 8
m *= 8; → m = m * 8
m /= 8; →m = m / 8
m %= 8; →m = m % 8
نوع کاراکتری char
یکی دیگر از انواع متغير در ++C نوع کاراکتری یا Char است. يک کاراکتر يک حرف، رقم يا نشانه است که يک شماره منحصر به فرد دارد. به بان سادهتر دیگر، هر کليدی که روی صفحهکليد يک کاراکتر است. مثلا هر يک از حروف ‘A’ تا ‘Z’ و ‘a’ تا ‘z’ و هر يک از اعداد ‘0’ تا ‘9’ و يا نشانههاي ‘~’ تا ‘+’ روی صفحهکليد را يک کاراکتر مینامند. برای تعريف متغيری از نوع کاراکتر از کلمه کليدی char استفاده میکنيم. يک کاراکتر بايد درون دو علامت آپستروف (‘) محصور شده باشد. پس ‘A’ يک کاراکتر است؛ همچنين ‘8’ يک کاراکتر است اما 8 يک کاراکتر نيست بلکه يک عدد صحيح است.
مثال
char c ='A';
نوع شمارشی enum
نوع شمارشی يک نوع صحيح است که توسط کاربر مشخص میشود. نحو اعلان يک نوع شمارشی به شکل زير است:
enum typename{enumerator-list}
که enum کلمهای کليدی است، typename نام نوع جديد است که کاربر مشخص میکند و enumerator-list مجموعه مقاديری است که اين نوع جديد میتواند داشته باشد. به عنوان مثال به تعريف زير دقت کنيد:
enum Day{SAT,SUN,MON,TUE,WED,THU,FRI}
حالا Day يک نوع جديد است و متغيرهايی که از اين نوع تعريف میشوند می توانند يکی از مقادير SAT و SUN و MON و TUE و WED و THU و FRI را داشته باشند:
Day day1,day2;
day1 = MON;
day2 = THU;
وقتي نوع جديد Day و محدوده مقاديرش را تعيين کرديم، میتوانيم متغيرهايی از اين نوع جديد بسازيم. در کد بالا متغيرهای day1 و day2 از نوع Day تعريف شدهاند. آنگاه day1 با مقدار MON و day2 با مقدار THU مقداردهی شده است.
مثال
#include <iostream>
using namespace std;
enum Day {SAT,SUN,MON,TUE,WED,THU,FRI};
int main()
{
Day day1,day2;
day1 = MON;
day2 = THU;
cout << "day1 : " <<day1<<endl;
cout << "day2 : " <<day2<<endl;
return 0;
}
خروجی برنامه
day1 : 2 day2 : 5
مقادير SAT و SUN و … هر چند که به همين شکل به کار میروند اما در کامپیوتر به شکل اعداد صحيح 0 و 1 و 2 و … ذخيره میشوند. به همين دليل است که به هر يک از مقادير SAT و SUN و … يک شمارشگر میگويند. میتوان مقادير صحيح دلخواهی را به شمارشگرها نسبت داد:
enum Day{SAT=1,SUN=2,MON=4,TUE=8,WED=16,THU=32,FRI=64}
اگر فقط بعضی از شمارشگرها مقداردهی شوند، آنگاه ساير شمارشگرها که مقداردهی نشدهاند مقادير متوالی بعدی را خواهند گرفت:
enum Day{SAT=1,SUN,MON,TUE,WED,THU,FRI}
دستور بالا مقادير 1 تا 7 را به ترتيب به روزهای هفته تخصيص خواهد داد.
همچنين دو يا چند شمارشگر در يک لیست میتوانند مقادير يکسانی داشته باشند:
enum Answer{NO=0,FALSE=0,YES=1,TRUE=1,OK=1}
نوع بولين bool
نوع bool يک نوع صحيح است که متغيرهای اين نوع فقط میتوانند مقدار true يا false داشته باشند. true به معنی درست و false به معنی نادرست است.
اما اين مقادير در اصل به صورت 1 و 0 درون کامپیوتر ذخيره میشوند: 1 براي true و 0 برای false.
انواع مميز شناور
در ادامه بحث انواع متغير در ++C به مبحث اعداد ممیز شناور میرسیم. عدد مميز شناور به بيان ساده همان عدد اعشاری است. عددی مانند 123.45 يک عدد اعشاری است. برای اين که مقدار اين عدد در کامپیوتر ذخيره شود، ابتدا بايد به شکل دودويی تبديل شود:
123.45 = (1111011.0111001)2
اکنون برای مشخص نمودن محل اعشار در عدد، تمام رقمها را به سمت راست مميز منتقل ميکنيم. البته با هر جابهجايی مميز، عدد حاصل بايد در توانی از 2 ضرب شود:
123.45 = 0.11110110111001× 27
به مقدار 11110110111001 «مانتيس عدد» و به 7 که توان روی دو است، «نمای عدد» گفته می شود. در سی پلاس پلاس ++C سه نوع ممیز شناور داریم.
- معمولا نوع float از چهار بايت براي نگهداری عدد استفاده میکند.
- نوع double از هشت بايت برای نگهداری عدد استفاده میکند.
- نوع long double از هشت يا ده يا دوازده يا شانزده بايت برای نگهداری عدد استفاده میکند.
تعريف متغير مميز شناور
در مبحث انواع متغير در ++C، تعريف متغير مميز شناور مانند تعريف متغير صحيح است. با اين تفاوت که از کلمه کليدی float يا double برای مشخص نمودن نوع متغير استفاده میکنيم.
float x; double x,y=0;
تفاوت نوع float با نوع double در اين است که نوع double دو برابر float از حافظه استفاده میکند. پس نوع double دقتی بسيار بيشتر از float دارد. به همين دليل محاسبات double وقتگيرتر از محاسبات float است.
سخن آخر
در این مقاله درمورد انواع متغیرها در زبان برنامه نویسی سی پلاس پلاس صحبت شد. در درس بعدی با مقاله معرفی دستورات شرطی و انتخاب در ++C در خدمت شما عزیزان خواهیم بود.











