از جمله مهمترین عملگرها در ++C میتوان به عملگرهای ریاضی، رابطهای، منطقی، بیتی و موارد دیگر اشاره کرد. در زبان ++C، عملگرها نقش کلیدی در انجام محاسبات و پردازش دادهها ایفا میکنند. استفاده از عملگرها برای اجرای صحیح وظایف برنامه نویسی ضروری است. عملگرها برای کار با دادهها و اجرای محاسبات مختلف به برنامه نویسان کمک میکنند. از سادهترین برنامهها تا پیچیدهترین پروژهها، همگی به نوعی از عملگرها استفاده میکنند. عملگرها به گروههای متخلفی تقسیم میشوند. هر گروه از آنها نوع خاصی از محاسبات را انجام میدهند. در نتیجه به عنوان توسعهدهنده زبان ++C لازم است که بر روی کار با این ابزارها تسلط کافی داشته باشیم.

در این مطلب از مجله فرادرس با انواع عملگرها در ++C آشنا میشویم. ابتدا این عملگرها را به صورت دستهبندیهای کلی نام بردهایم. سپس یک به یک هر دسته را معرفی کرده و با کمک مثال سادهای روش استفاده از عملگرهای موجود در آن دسته را بررسی کردیم. در نهایت هم با کمک جدول ساده و کاملی اولویت اجرای عملگرهای مختلف را به صورت دستهبندی شده نمایش دادهایم.
انواع عملگرها در ++C
عملگر، نمادی است که به کامپایلر میگوید، عملیات ریاضی یا منطقی خاصی را انجام دهد. زبان برنامه نویسی ++C عملگرهای درونی زیاد و متنوعی دارد.
به طور کلی عملگرهای ++C در شش دسته اصلی طبقهبندی میشوند. در فهرست زیر، این دستهها را نام بردهایم.
- «عملگرهای ریاضی» (Arithmetic Operators)
- «عملگرهای رابطهای» (Relational Operators)
- «عملگرهای منطقی» (Logical Operators)
- «عملگرهای بیتی» (Bitwise Operators)
- «عملگرهای تخصیص» (Assignment Operators)
- «عملگرهای متفرقه» (Misc Operators)

در ادامه این مطلب، تمام عملگرهای نام برده شده در فهرست بالا را تک به تک توضیح داده و برای هر کدام مثالهای مختلفی را بررسی کردهایم.
عملگرهای ریاضی
عملگرهای ریاضی در ++C، نمادهایی هستند که برای اجرای عملیات پایه ریاضی بر روی عملوندها به کار برده میشوند. استفاده از این عملگرها برای پیادهسازی هر نوع محاسبهای ضروری است.

اگر در مراحل ابتدایی یادگیری زبان ++C هستید، باید بر روی کار با مفاهیم اولیه این زبان برنامه نویسی مسلط شوید. کسب این مهارتها تاثیر بسیار زیادی در افزایش سرعت یادگیری بخشهای پیشرفتهتر این زبان دارد. به همین دلیل، پیشنهاد میکنیم که فیلم رایگان آموزش برنامه نویسی (سی پلاس پلاس) «C++»، سریع و آسان در 150 دقیقه را از فرادرس مشاهده کنید. بعد از تماشای این فیلم، و موفقیت در آزمون نهایی به صورت رایگان، گواهینامه پایان دوره را از فرادرس دریافت کنید. لینک دسترسی به این فیلم را در پایین نیز قرار دادهایم.
در فهرست زیر، عملگرهای ریاضی را نوشتهایم. زبان ++C از تمام این عملگرها پشتیبانی میکند. فرض کنیم در تمام مثالهای این فهرست، متغیر «A» برابر با ۱۰ و متغیر «B» برابر با ۲۰ است.
- عملگر +: از این عملگر برای جمع کردن دو عملوند استفاده میشود. برای مثال، نتیجه عبارت A + B برابر با ۳۰ است.
- عملگر –: این عملگر، مقدار عملوند سمت راست را از عملوند سمت چپ، کم میکند. همان عملگر منها است. برای مثال، نتیجه عبارت A – B برابر با ۱۰- است.
- عملگر *: عملگر «*» هر دو عملوند – چپ و راست خود – را در یکدیگر ضرب میکند. به عنوان نمونه نتیجه عبارت A * B برابر با ۲۰۰ است.
- عملگر /: عملگر / عملوند سمت چپ خود را – با نام مقسوم – بر روی عملوند سمت راست خود – با نام مقسومعلیه – تقسیم میکند. نتیجه عبارت B / A برابر با ۲ است.
- عملگر %: عملگر درصد یا «Modulu» عملیات تقسیم عدد صحیح انجام میدهد. اما خروجی این عملگر باقیمانده تقسیم است. یعنی اینکه عبارت B % A برابر با ۰ است.
- عملگر ++: به این عملگر، عملگر «افزایش» (Increment) گفته میشود. عملگر ++ به مقدارهایی با نوع عدد صحیح، یک واحد اضافه میکند.
- عملگر —: به عملگر —، عملگر «کاهش» (Decrement) گفته میشود. عملگر «کاهش» از مقدارهایی با نوع عدد صحیح، یک واحد کم میکند.
مثال برای نمایش عمگرهای ریاضی
همینطور که میدانیم عملگرهای ریاضی جزو پرکاربردترین عملگرها در ++C هستند. بیشتر این عملگرها در ریاضیات پایه کاربرد دارند. در این بخش از مطلب با کمک مثال کدنویسی شدهای روش استفاده از عملگرهای ریاضی را بررسی کردهایم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول زبان ++C نمایش داده میشود.
Line 1 - Value of c is :31 Line 2 - Value of c is :11 Line 3 - Value of c is :210 Line 4 - Value of c is :2 Line 5 - Value of c is :1 Line 6 - Value of c is :21 Line 7 - Value of c is :22
عملگرهای رابطه ای
از عملگرهای رابطهای برای مقایسه دو مقدار یا عبارت مختلف استفاده میشود. در واقع به عملگرهای رابطهای، عملگرهای مقایسهای هم گفته میشود. جواب عملگرهای رابطهای فقط دو حالت دارد. اگر نتیجه مقایسه انجام شده صحیح باشد، این عملگرها مقدار «True» و در غیر این صورت، مقدار «False» برمیگردانند.
وجود این عملگرها برای تصمیمگیری و کنترل جریان برنامه بر اساس شرایط مختلف، ضروری است. در فهرست زیر، تمام عملگرهای رابطهای پشتیبانی شده توسط زبان برنامه نویسی ++C معرفی شدهاند. برای معرفی این عملگرها از مثال بسیار سادهای نیز استفاده کردهایم. هر کدام از عملگرهای رابطهای دارای دو عملوند مختلف هستند. در مثالهای زیر، مقدار عملوند A را برابر با ۱۰ و مقدار عملوند B را برابر با ۲۰ در نظر بگیرید.
- عملگر ==: این عملگر، برابری مقدار دو عملوند چپ و راست خود را بررسی میکند. اگر عملوندهای هر دو طرف ==، برابر باشند به معنای صحیح بودن شرط است. در نتیجه مقدار True برگشت داده میشود. در این مثال – با فرض بالا – حاصل عبارت A == B برابر با False است.
- عملگر !=: این عملگر، بر عکس عملگر ==، نابرابری دو عملوند مختلف را بررسی میکند. یعنی شرط این عملگر وقتی برقرار است که دو عملوند آن با هم برابر نباشند. برای مثال، حاصل عبارت A != B برابر با True است.
- عملگر >: عملگر > بررسی میکند که آیا مقدار عملوند سمت چپ، بزرگتر از مقدار عملوند سمت راست است یا نه. اگر این شرط برقرار بود در خروجی True برمیگرداند. به عنوان نمونه حاصل عبارت A > B برابر با False است.
- عملگر <: عملگر < بررسی میکند که آیا مقدار عملوند سمت چپ، کوچکتر از مقدار عملوند سمت راست است یا نه. اگر این شرط برقرار بود در خروجی True برمیگرداند. به عنوان نمونه حاصل عبارت A < B برابر با True است.
- عملگر >=: عملگر >= بررسی میکند که آیا مقدار عملوند سمت چپ، بزرگتر یا مساوی با مقدار عملوند سمت راست است یا نه. اگر این شرط برقرار بود در خروجی True برمیگرداند. به عنوان نمونه حاصل عبارت A >= B برابر با False است.
- عملگر <=: عملگر <= بررسی میکند که آیا مقدار عملوند سمت چپ، کوچکتر یا مساوی مقدار عملوند سمت راست است یا نه. اگر این شرط برقرار بود در خروجی True برمیگرداند. به عنوان نمونه حاصل عبارت A => B برابر با True است.

مثال برای نمایش عمگرهای رابطه ای
عملگرهای رابطهای با نام عملگرهای مقایسهای یا شرطی نیز شناخته میشوند. این عملگرها تاثیری زیادی در مدیریت روند اجرای برنامهها دارند. در این بخش از مطلب، رفتار تمام عملگرهای رابطهای را با کمک مثال زیر، بررسی کردهایم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول زبان ++C نمایش داده میشود.
Line 1 - a is not equal to b Line 2 - a is not less than b Line 3 - a is greater than b Line 4 - a is either less than or equal to b Line 5 - b is either greater than or equal to b
یادگیری ++C با کمک فرادرس
فرادرس، امکان یادگیری زبان برنامهنویسی ++C را برای همه فراهم کرده است. این پلتفرم آموزشی، مجموعهای کامل از فیلمهای آموزشی را تولید کرده است. فیلمهای آموزشی فرادرس به دانشجویان، برنامهنویسان و علاقهمندان کمک میکنند تا با مفاهیم پایه و پیشرفته زبان ++C آشنا شوند. زبان ++C یکی از قدرتمندترین زبانهای چندمنظوره است. این زبان در توسعه سیستمعاملها، بازیها، نرمافزارهای صنعتی و پروژههای تحقیقاتی کاربرد گستردهای دارد. وجود ویژگیهایی مانند شی گرایی، چندریختی و وراثت، آن را برای پیادهسازی ساختارهای پیچیده نرمافزاری، بسیار مناسب کرده است.

در فرادرس، این مسیر آموزشی با دقت و توجه به نیازهای واقعی یادگیرندگان طراحی شده است. در نتیجه، مسیر یادگیری شما سریعتر و مطمئنتر طی میشود. فرادرس، یکی از کاملترین مجموعه آموزشهای زبان برنامه نویسی ++C را به زبان فارسی تولید و منتشر کرده است. در فهرست پایین، چند مورد از فیلمهای آموزشی ++C را معرفی کردهایم. در صورت تمایل به مشاهده فیلمهای بیشتر بر روی تصویر بالا کلیک کرده و به صفحه اصلی این مجموعه آموزشی، هدایت شوید.
عملگرهای منطقی
از این عملگرهای برای اجرای محاسبات منطقی بر روی مقادیر Boolean استفاده میشود. از عملگرهای منطقی برای کنترل جریان اجرای برنامه در ساختارهای شرطی نیز استفاده میشود.
سه عملگر منطقی اصلی در زبان برنامه نویسی سی شارپ وجود دارند. تمام این عملگرها را در فهرست زیر معرفی کردهایم. برای درک مثالهای زده شده، فرض کنیم که متغیر A برابر با 1 و متغیر B برابر با 0 است.
- عملگر &&: به عملگر &&، عملگر منطقی «AND» گفته میشود. خروجی این عملگر وقتی True است که هیچکدام از عملوندهای آن صفر نباشند. به عنوان مثال، نتیجه عبارت A && B برابر با False است.
- عملگر ||: به این عملگر، عملگر «OR» هم گفته میشود. اگر حداقل یکی از عملوندهای || برابر با 1 باشند، خروجی عملگر || برابر با True میشود. برای مثال، نتیجه (A || B) برابر با True است.
- عملگر !: به عملگر !، عملگر منطقی «NOT» گفته میشود. از این عملگر برای معکوس کردن حالت منطقی عملوند خاصی استفاده میشود. عملگر ! تکعملوندی است. اگر مقدار عبارت خاصی برابر با True شود عملگر ! مقدار آن را False میکند و برعکس. برای مثال، نتیجه عبارت !(A && B) برابر با True است.

مثال برای نمایش عمگرهای منطقی
در کادر زیر، با کمک مثال سادهای روش پیادهسازی و رفتار هر سه عملگر منطقی را بررسی کردهایم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول زبان ++C نمایش داده میشود.
Line 1 - Condition is true Line 2 - Condition is true Line 4 - Condition is not true Line 5 - Condition is true
عملگرهای بیتی
عملگرهای بیتی برای انجام محاسبات باینری استفاده میشوند. این عملگرها فقط با اعداد در مبنای دو یا اعداد صحیح کار میکنند. مهمترین کاربردهای عملگرهای بیتی در برنامه نویسی سطح پایین – زبان ماشین – انجام کارهای گرافیکی و در «رمزنگاری» (Cryptography) است.
عملگرهای بیتی بر روی بیتهای ۰ و ۱ کار میکنند. این عملگرها عملیات خود را به صورت بیت به بیت انجام میدهند. در جدول زیر، نتیجه کار عملگرهای & و | و ^ را بر روی متغیرهای p و q نمایش دادهایم.
p | q | p & q | p | q | p ^ q |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
فرض کنیم که A = 60 و B = 13 است. معادل باینری این اعداد به شکل A = 0011 1100 و B = 0000 1101 نوشته میشود. در نتیجه عبارتهای زیر برقرار است.
- A&B = 0000 1100
- A|B = 0011 1101
- A^B = 0011 0001
- ~A = 1100 0011
در فهرست زیر، تمام عملگرهای بیتی پشتیبانی شده توسط زبان برنامه نویسی ++C را معرفی کردهایم. برای درک بهتر این مثالها فرض کنید که مقدار متغیر A برابر با 60 و مقدار متغیر B برابر با 13 است.
- عملگر &: این عملگر به عنوان عملگر AND شناخته میشود. جواب عملگر AND فقط وقتی برابر با 1 یا True است که مقدار بیت در هر دو عملوند آن برابر با 1 باشد. بنابراین نتیجه عبارت (A & B) برابر با 0000 1100 است. این مقدار معال عدد 12 است.
- عملگر |: عملگر OR باینری برای محاسبه نتیجه، بیتهای عملوندهای دو طرف خود را مقایسه میکند. فقط کافی است که مقدار یکی از بیتها برابر با 1 باشد. نتیجه برابر با یک میشود. در واقعی وقتی نتیجه True میشود که یا عملوند سمت راست یا عملوند سمت چپ True باشند. بنابراین نتیجه عبارت (A | B) برابر با 0011 1101 است. این مقدار معاد عدد 61
است. - عملگر ^: این عملگر با نام عملگر XOR شناخته میشود. نتیجه عملگر XOR وقتی 1 یا True است که فقط یکی از عملوندها مقدار 1 یا True داشته باشند. در واقع عملگرها باید متضاد همدیگر باشند. در نتیجه مقدار عبارت (A ^ B) برابر با 0011 0001 میشود. این مقدار معادل عدد 49 است.

- عملگر ~: به این نماد، «عملگر مکمل بیتی» (Binary Ones Complement Operator) گفته میشود. این عملگر، جزو عملگرهای تکعملوندی است. یعنی اینکه مانند عملگر ! فقط بر روی یک علموند کار میکند. کار این عملگر معکوس کردن بیتها است. یعنی اینکه تمام 0-ها را به 1 و 1-ها را به صفر تبدیل میکند. در نتیجه، عبارت (~A ) برابر با 1100 0011 میشود. این مقدار معادل -61 است. منفی شدن جواب بخاطر این است که علامت ~ مقدار مکمل عدد را بدست میآورد.
- عملگر << : به عملگر <<، عملگر شیفت به چپ باینری گفته میشود. این عملگر بیتهای عملوند سمت چپ خود را به تعداد مشخص شده توسط عملوند سمت راست به سمت چپ جابهجا میکند. برای مثال، عبارت A << 2 برابر با 1111 0000 میشود. این مقدار معادل عدد 240 است.
- عملگر >>: به عملگر >>، عملگر شیفت به راست باینری گفته میشود. این عملگر بیتهای عملوند سمت چپ خود را به تعداد مشخص شده توسط عملوند سمت راست به سمت راست جابهجا میکند. برای مثال، عبارت A >> 2 برابر با 0000 1111 میشود. این مقدار معادل عدد 15 است.
نکته: گفتیم که عملگر ~ برای نمایش مکمل اعداد باینری استفاده میشود. در این مثال مکمل عدد 60، عدد -61 شده است. در دستگاه باینری برای نمایش اعداد مثبت و منفی از علامتهای + و – استفاده نمیشود. بلکه از مقدار قرار گرفته در سمت راست عدد، نوع آن را تشخیص میدهیم. برای شناخت بهتر اعداد باینری علامتدار و کسب مهارت در کار با آنها میتوانید مطلب مربوط به این موضوع را در مجله فرادرس مطالعه کنید.
مثال برای نمایش عمگرهای بیتی
برای کمک به درک بهتر مطلب، در زیر، مثالی آوردهایم. در این مثال از تمام عملگرهای بیتی استفاده شده است.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول ++C نمایش داده میشود.
Line 1 - Value of c is : 12 Line 2 - Value of c is: 61 Line 3 - Value of c is: 49 Line 4 - Value of c is: -61 Line 5 - Value of c is: 240 Line 6 - Value of c is: 15
عملگرهای تخصیص
از عملگرهای تخصیص برای اختصاص دادن مقدار به متغیرها استفاده میشود. با کمک این عملگرها برنامه نویسان میتوانند مقادیر ذخیره شده در متغیرها را مقداردهی کرده یا بهروزرسانی کنند.

زبان برنامه نویسی ++C از یازده نوع مختلف عملگر تخصیص پشتیبانی کند. در فهرست زیر، تمام این عملگرها را معرفی کردهایم.
- عملگر =: عملگر ساده و معمولی مساوی، تمام مقادیر سمت راست خود را به متغیر موجود در سمت چپ اختصاص میدهد. برای مثال، در عبارت C = A + B مقدار A + B محاسبه شده و در متغیر C قرار میگیرد.
- عملگر +=: به این عملگر، عملگر بعلاوه مساوی هم گفته میشود. این عملگر مقدار عملوند سمت راست خود را به عملوند سمت چپ اضافه میکند. سپس مقدار نتیجه را در عملوند سمت چپ ذخیره میکند. عبارت C += A معادل جمله C = C + A است.
- عملگر -=: به عملگر -=، عملگر منهامساوی گفته میشود. این عملگر مقدار عملوند سمت راست خود را از عملوند سمت چپ کم میکند. سپس نتیجه بدست آمده را به عملوند سمت چپ تخصیص میدهد. عبارت C -= A معادل است با C = C – A.
- عملگر *=: به این عملگر، عملگر ضربدرمساوی میگویند. این عملگر ابتدا مقدار عملوند سمت راست خود را در عملوند سمت چپ ضرب میکند. سپس نتیجه بدست آمده را به عملوند سمت چپ تخصیص میدهد. عبارت C *= A معادل عبارت C = C * A است.
- عملگر /=: به عملگر /= عملگر تقسیممساوی گفته میشود. این عملگر، ابتدا مقدار عملوند سمت چپ خود را تقسیم بر عملوند سمت راست میکند. سپس نتیجه بدست آمده را در عملوند سمت چپ ذخیره میکند. عبارت حسابی C /= A برابر است با C = C / A.
- عملگر %=: این عملگر با نام عملگر درصدمساوی یا «Modulus AND Assignment» شناخته میشود. عملگر درصدمساوی، مقدار باقیمانده تقسیم عملوند سمت راست خود را بر روی عملوند سمت چپ محاسبه کرده و نتیجه را به عملوند سمت چپ تخصیص میدهد. جمله C %= A مساوی با C = C % A است.
- عملگر <<=: این عملگر با نام «عملگر شیفت به چپ و مساوی» (Left Shift AND Assignment Operator) شناخته میشود. عبارت C <<= 2 برابر با عبارت C = C << 2 است.
- عملگر >>=: این عملگر با نام «عملگر شیفت به راست و مساوی» (Right Shift AND Assignment Operator) شناخته میشود. عبارت C >>= 2 برابر با C = C >> 2 است.
- عملگر &=: این عملگر با نام «عملگر AND بیتی و مساوی» (Bitwise AND Assignment Operator) شناخته میشود. عبارت C &= 2 برابر با C = C & 2 است.
- عملگر ^=: نام این عملگر، «عملگر XOR و مساوی بیتی» (Bitwise XOR and Assignment Operator) است. عبارت C ^= 2 برابر با C = C ^ 2 است.
- عملگر |=: این عملگر، کار عمگر «یا» | و «مساوی» = را بر روی اعداد باینری به شکل همزمان انجام میدهد. یعنی اینکه عبارت C |= 2 با عبارت C = C | 2 یکسان است.

مثال برای نمایش عمگرهای تخصیص
در این بخش از مطلب، با هدف کمک به درک بهتر عملگرهای تخصیص، مثال کامل و سادهای را بررسی کردهایم. برای هر کدام از عملگرهای فهرست بالا، نمونهای در کد زیر، پیادهسازی شده است.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول زبان ++C نمایش داده میشود.
Line 1 - = Operator, Value of c = : 21 Line 2 - += Operator, Value of c = : 42 Line 3 - -= Operator, Value of c = : 21 Line 4 - *= Operator, Value of c = : 441 Line 5 - /= Operator, Value of c = : 21 Line 6 - %= Operator, Value of c = : 11 Line 7 - <<= Operator, Value of c = : 44 Line 8 - >>= Operator, Value of c = : 11 Line 9 - &= Operator, Value of c = : 2 Line 10 - ^= Operator, Value of c = : 0 Line 11 - |= Operator, Value of c = : 2
یادگیری برنامه نویسی با استفاده از فیلم های آموزشی
برای یادگیری زبانهای برنامه نویسی باید دورهها علمی مختلفی را بگذرانیم. این دورهها از مراحل ابتدایی مانند آشنایی با سینتکس، حلقه، انواع داده، عبارتهای شرطی و غیره تا مراحل پیشرفتهای مانند شیءگرایی را آموزش میدهند. اما در نهایت برای پیادهسازی معلومات خود نیاز به آموزشهای واقعیتری داریم. پیادهسازی پروژههایی مانند طراحی سایت، طراحی رباتهای فعال در فضای مجازی و ساخت اپلیکیشنهای اندروید، هر کدام به مهارتهای خاصی نیاز دارند.
حتی برای اجرای بعضی از پروژهها لازم است از چند زبان برنامهنویسی و تکنولوژی مختلف در کنار هم استفاده کنیم. در فهرست زیر، چند فیلم آموزش پروژهمحور برنامهنویسی از فرادرس را معرفی کردهایم.
در صورت تمایل با کلیک بر روی تصویر زیر، به فیلمهای آموزشی بیشتری دسترسی خواهید داشت.

عملگرهای متفرقه
نوع دیگری از عملگرها در ++C وجود دارند که در سایر دستهبندیها مانند عملگرهای منطقی و ریاضی قرار نمیگیرند. به این عملگرها در ++C، عملگرهای متفرقه گفته میشود. اغلب اوقات نام «عملگرهای متفرقه» (Miscellaneous Operators) را به صورت خلاصه به «عملگرهای میسک» (Misc Operators) تبدیل میکنند.
در فهرست زیر، بعضی از عملگرهای متفرقه مهم و پرکاربرد در زبان ++C را معرفی کردهایم.
- عملگر sizeof
- عملگر شرطی ?
- عملگر کاما
- عملگرهای عضویت . و ->
- عملگرهای «تبدیل نوع» (Type Casting)
- عملگر اشارهگر &
- عملگر اشارهگر *

در ادامه، کاربرد هر کدام از عملگرهای فهرست بالا را توضیح دادهایم.
عملگر sizeof
این عملگر اندازه متغیرها را محاسبه کرده و برمیگرداند. برای مثال، اگر a از نوع عدد صحیح باشد، عبارت sizeof(a) در خروجی مقدار 4 برمیگرداند. این مقدار نشاندهنده آن است که متغیرهای Integer به اندازه ۴ بایت فضا درحافظه اشغال میکنند. عملگر sizeof یگانه است. یعنی اینکه فقط با یک عملوند کار میکند.
در کادر زیر، چند مثال مختلف درباره روش استفاده از عملگر sizeof() را پیادهسازی کردهایم.
بعد از کامپایل شدن و اجرای کدهای بالا، نتایج زیر تولید میشوند. البته این نتایج ممکن است بین کامپیوترها و نسخههای مختلف ++C کمی فرق کنند.
Size of char : 1 Size of int : 4 Size of short int : 2 Size of long int : 4 Size of float : 4 Size of double : 8 Size of wchar_t : 4
با استفاده از عملگر sizeof حتی میتوانیم اندازه اشیا ساخته شده از روی کلاسها را هم بدست بیاوریم. به عنوان نمونه در کادر زیر ابتدا کلاسی را به نام Student تعریف کردیم. سپس با کمک عملگر sizeof اندازه کلاس یا در واقع تمام اشیا ساخته شده از کلاس را بدست آوردیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول زبان ++C نمایش داده میشود.
Size of Student class: 16 bytes
عملگر شرطی ?
این عملگر، سهگانه یا سهعملوندی است. از عملگر شرطی ? برای کوتاهتر نوشتن عبارتهای شرطی استفاده میشود. در کادر زیر سینتکس استفاده از این عملگر را نوشتهایم.
در عبارت بالا سه پارامتر مختلف Exp1 و Exp2 و Exp3 وجود دارند. هر کدام از این پارامترها یک عبارت را مشخص میکنند. در زمان استفاده از این عملگر باید به کاراکترهای علامت ? و : و ; حتما دقت کنید.

در جمله بالا پارامتر Exp1 عبارت شرطی را مشخص میکند. روش کار عملگر ? به این صورت است که ابتدا Exp1 ارزیابی میشود. اگر مقدار آن صحیح بود مقدار عبارت Exp2 محاسبه شده و در خروجی به عنوان جواب برگشت داده میشود. اما اگر شرط Exp1 غلط بود، عبارت Exp3 محاسبه شده و نتیجه آن در خروجی برگشت داده میشود.
عملگر ? سه گانه بوده و میتوان از آن بهجای عبارت شرطی If-Else استفاده کرد. در کد زیر، یک عبارت شرطی معمولی نوشتهایم.
ساختار بالا با کد پایین برابر است.
عملگر کاما
از عملگر کاما , برای متصل کردن عبارتهای مختلف در یک خط استفاده میشود. آخرین مقدار هر عبارت، مقداری است که در انتهای سمت راست آن عبارت نوشته شده است. این مقدار به عنوان خروجی عملگر کاما شناخته میشود. این مسئله به معنای آن است که با کمک , میتوانیم چند مرحله را یکی پس از دیگری در یک خط و پشت سرهم اجرا کنیم.
برای مثال، در کادر زیر، عبارتی را با عملگر کاما نوشتهایم.
برای درک بهتر خط بالا به توضیحات زیر توجه کنید.
- مقدار 19 به متغیر count اختصاص داده میشود.
- مقدار 10 به متغیر incr اختصاص داده میشود.
- مقدار 1 به مقدار ذخیره شده در متغیر count اضافه میشود.
- در نهایت هم مقدار آخرین عبارت به متغیر var اختصاص داده میشود. این مقدار برابر با نتیجه count + 1 یعنی 20 است.
برای نوشتن عبارتهای کاما باید از پرانتزهای باز و بسته استفاده کنیم. زیرا اولویت اجرای عملگر , از عملگر = کمتر است. با کمک پرانتزها مطمئن میشویم که عبارت نوشته شده به درستی کار میکند.
عملگرهای عضویت . و <-
از عملگرهای . و -> یا «نقطه و پیکان» برای دسترسی به اعضای تشکیل دهنده کلاسها، ساختارها و مجموعهها استفاده میشود.
- وقتی که با اشیا واقعی کار میکنیم، باید از عملگر نقطه . استفاده کنیم.
- وقتی که با اشارهگر به اشیا کار میکنیم، باید از عملگر پیکان -> استفاده کنیم.
برای مثال، در کادر زیر، ساختاری با نوع Struct و به نام Employee تعریف کردهایم. از روی این ساختار، شیئی به نام emp ساختهایم. در زبان ++C به شکل مستقیم میتوان نامی را به ویژگی first_name در شیء emp اختصاص داد. اما برای انجام این کار باید از نقطه . استفاده کنیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول زبان ++C نمایش داده میشود.
First Name: zara
این بار فرض کنیم شیئی به نام emp از ساختار Employee ساختهایم. برای اشاره به این شیء از اشارهگری به نام p_emp استفاده میکنیم. در این صورت برای اختصاص مقدار zara به ویژگی first_name در آن شیء باید از کدی مانند نمونه زیر استفاده کنیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول زبان ++C نمایش داده میشود.
First Name: zara
عملگرهای تبدیل نوع
از «عملگرهای تبدیل» (Casting Operators) برای تبدیل دادهها از نوعی به نوع دیگر استفاده میشود. برای مثال، خروجی عبارت int(2.2000) برابر با 2 است. در زمان کار با کلاسها در برنامه نویسی و اشیا آنها ممکن است از انواع عملگرهای تبدیل نوع استفاده کنیم.

به منظور کمک به درک ساده مطلب، در زیر، مثالی آوردهایم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول زبان ++C نمایش داده میشود.
Line 1 - Value of (int)a is :21 Line 2 - Value of (int)b is :10
عملگر اشاره گر &
عملگر & یکی از عملگرهای یگانه است. یعنی اینکه فقط یک عملوند دارد. عملگر & آدرس حافظه متغیر مشخص شده را برمیگرداند. برای مثال، اگر var متغیری از نوع Integer باشد، عبارت &var به معنی آدرس آن متغیر است. این متغیر دقیقا مانند دیگر متغیرهای یگانه، یعنی از راست به چپ کار میکند. میتوانیم عبارت &var را به صورت «آدرس متغیر var» بخوانیم.
نکته: برای تعریف متغیرهای اشارهگر – متغیرهایی که آدرس حافظه را ذخیره میکنند – در هنگام تعریف و قبل از نام آنها باید از عملگر «*» استفاده کنیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول زبان ++C نمایش داده میشود.
Value of var :3000 Value of ptr :0xbff64494
عملگر اشاره گر «*»
عملگر «*» هم از نوع عملگرهای یگانه است. عملکرد این عملگر برعکس عملکرد & است. از عملگر «*» برای بدست آوردن مقدار ذخیره شده در آدرس مشخص استفاده میشود. یعنی اینکه اگر متغیری داشته باشیم که در آن آدرس خاصی ذخیره شده است. یا مقدار آدرس خاصی را بدانیم، با کمک عملگر «*» میتوانیم به محتوای آن خانه در حافظه دسترسی داشته باشیم.
در کدهای بالا، ابتدا آدرس متغیر var را با کمک عملگر & در متغیر ptr ذخیره کردیم. سپس با استفاده از عملگر «*» محتوای موجود در خانه ptr را به متغیر val اختصاص دادیم. بعد از اجرای کدهای بالا، خروجی زیر در کنسول زبان ++C نمایش داده میشود.
Value of var :3000 Value of ptr :0xbff64494 Value of val :3000
اولویت عملگرها در ++C
اولویت عملگرها در ++C مشخص میکند که عبارتهای نوشته شده چگونه دستهبندی شوند. بنابراین ترتیب حل شدن محاسبات موجود در عبارتها تعیین میشود. بعضی از عملگرها اولویت بالاتری نسبت به سایر عملگرها دارند. در نتیجه، در شرایط برابر، ابتدا عملگرهای با اولویت بالاتر اجرا میشوند.
برای مثال، اولویت اجرای عملگر ضرب «*» بالاتر از اولویت اجرای عملگر + است. به عنوان نمونه فرض کنیم که عبارت x = 7 + 3 * 2; به کامپیوتر داده شده است. در این عبارت مقدار x برابر با 13 میشود. زیرا اولویت عملگر ضرب «*» بیشتر از عملگر + است. اگر اولویت عملگر + بیشتر بود جواب برابر با 20 میشد. یعنی اینکه ابتدا مقدار عبارت 3 + 7 محاسبه شده و سپس ضرب در 2 میشد.

در فهرست زیر، تمام عملگرها را به ترتیب اولویت از بالا به پایین مرتب کردهایم. بالاترین عملگرها اولویت بیشتر و پایینترین عملگرها اولویت کمتری دارند.
- عملگرهای «پسوندی» (Postfix): این دسته از عملگرها شامل نمادهای () و [] و -> و . و ++ و — هستند. جهت شرکتپذیری در عملگرهای پسوندی از چپ به راست است.
- عملگرهای «یگانه» (Unary): این دسته از عملگرها شامل نمادهای + و – و ! و ~ و ++ و — و (type)* و & و sizeof هستند. جهت شرکتپذیری در عملگرهای «یگانه» از راست به چپ است.
- عملگرهای «ضربی» (Multiplicative): این دسته از عملگرها شامل نمادهای * و / و % هستند. جهت شرکتپذیری در عملگرهای «ضربی» از چپ به راست است.
- عملگرهای «افزایشی» (Additive): این دسته از عملگرها شامل نمادهای + و – هستند. جهت شرکتپذیری در عملگرهای «افزایشی» از چپ به راست است.
- عملگرهای Shift: این دسته از عملگرها شامل نمادهای << و >> هستند. جهت شرکتپذیری در عملگرهای Shift از چپ به راست است.
- عملگرهای «رابطهای» (Relational): این دسته از عملگرها شامل نمادهای < و <= و > و >= هستند. جهت شرکتپذیری در عملگرهای «رابطهای» از چپ به راست است.
- عملگرهای سنجش «برابری» (Equality): این دسته از عملگرها شامل نمادهای == و != هستند. جهت شرکتپذیری در عملگرهای سنجش از چپ به راست است.
- عملگر بیتی AND: این عملگر با نماد & نشان داده میشود. جهت شرکتپذیری در عملگر بیتی AND از چپ به راست است.
- عملگر بیتی XOR: این عملگر با نماد ^ نشان داده میشود. جهت شرکتپذیری در عملگر بیتی XOR از چپ به راست است.
- عملگر بیتی OR: این عملگر با نماد | نشان داده میشود. جهت شرکتپذیری در عملگر بیتی OR از چپ به راست است.
- عملگر منطقی AND: این عملگر با نماد && نشان داده میشود. جهت شرکتپذیری در عملگر منطقی AND از چپ به راست است.
- عملگر منطقی OR: این عملگر با نماد || نشان داده میشود. جهت شرکتپذیری در عملگر منطقی OR از چپ به راست است.
- عملگرهای «شرطی» (Conditiona): این دسته از عملگرها شامل نمادهای ? و ?: در کنار یکدیگر است. جهت شرکتپذیری در عملگرهای «شرطی» از راست به چپ است.
- عملگرهای «تخصیص» (Assignment): این دسته از عملگرها شامل نمادهای = و += و -= و *= و /= و %= و >>= و <<= و &= و ^= و |= هستند. جهت شرکتپذیری در عملگرهای «تخصیص» از از راست به چپ است.
- عملگر کاما: این عملگر با نماد , نشان داده میشود. جهت شرکتپذیری در عملگر کاما از چپ به راست است.
در کادر زیر، کدی را برای بررسی اولویت اجرای عملگرها پیادهسازی کردهایم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول زبان ++C نمایش داده میشود.
Value of (a + b) * c / d is :90 Value of ((a + b) * c) / d is :90 Value of (a + b) * (c / d) is :90 Value of a + (b * c) / d is :50
جمعبندی
در این مطلب از مجله فرادرس، با عملگرهای مختلف در زبان برنامه نویسی ++C آشنا شدهایم. انواع عملگرها در ++C شامل «عملگرهای ریاضی»، «عملگرهای رابطهای»، «عملگرهای منطقی»، «عملگرهای بیتی»، «عملگرهای تخصیص» و «عملگرهای متفرقه» هستند. دسته آخر، عملگرهایی هستند که وظایف خاصی را انجام میدهند. ولی در هیچکدام از دستهبندیها دیگر جای نمیگیرند. هر کدام از این عملگرها برای اجرای نوع خاصی از وظایف به کار برده میشوند.
برای پیادهسازی هر پروژهای – شاید به غیر از پروژههای بسیار کوچک – لازم است که از عملگرها استفاده کنیم. مهارت کار کردن با عملگرها یکی از ضروریترین تواناییهای برنامه نویسان است. بدون این مهارت و بدون رعایت اولویت اجرای عملگرها هیچ برنامهای بدرستی کار نمیکند.
source