فصل ۳: عملگرها (Operators) در C++
🎯 هدف این فصل
بعد از مطالعه این فصل شما باید بتوانید:
- انواع عملگرهای C++ را بشناسید.
- عملگرهای ریاضی، مقایسهای، منطقی و بیتی را استفاده کنید.
- از عملگرهای افزایش/کاهش، تخصیص، و عملگرهای خاص مثل
sizeof
و?:
بهدرستی بهره ببرید. - تقدم عملگرها (Operator Precedence) را درک کنید تا ترتیب اجرای صحیح داشته باشید.
۱. عملگر چیست؟
عملگر (Operator) یک نماد در C++ است که به کامپایلر میگوید عملیات خاصی را روی دادهها انجام دهد.
مثلاً +
برای جمع، ==
برای مقایسه برابری، &&
برای AND منطقی و غیره.
عملگرها روی عملوند (Operand) اجرا میشوند:
5 + 3
- عملوند →
5
و3
- عملگر →
+
۲. دستهبندی کلی عملگرها
دسته | مثال | توضیح |
---|---|---|
عملگرهای ریاضی (Arithmetic) | + - * / % | انجام عملیاتهای ریاضی |
عملگرهای مقایسهای (Relational) | == != > < >= <= | بررسی رابطه دو مقدار |
عملگرهای منطقی (Logical) | && || ! | ترکیب شرطها |
عملگرهای بیتی (Bitwise) | & | ^ ~ << >> | کار با بیتها |
عملگرهای تخصیص (Assignment) | = += -= *= /= %= | مقداردهی به متغیر |
افزایش/کاهش (Increment/Decrement) | ++ -- | تغییر مقدار متغیر به اندازه یک |
عملگرهای خاص (Miscellaneous) | sizeof , ?: , , | عملیاتهای خاص |
۳. عملگرهای ریاضی (Arithmetic Operators)
عملگر | کاربرد | مثال |
---|---|---|
+ | جمع | a + b |
- | تفریق | a - b |
* | ضرب | a * b |
/ | تقسیم | a / b |
% | باقیمانده تقسیم | a % b |
📌 نکته مهم: اگر هر دو عملوند int
باشند، نتیجه تقسیم نیز int
خواهد بود (قسمت اعشاری حذف میشود).
مثال:
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 3;
cout << "a + b = " << a + b << endl;
cout << "a - b = " << a - b << endl;
cout << "a * b = " << a * b << endl;
cout << "a / b = " << a / b << endl; // خروجی 3
cout << "a % b = " << a % b << endl;
}
۴. عملگرهای مقایسهای (Relational Operators)
این عملگرها نتیجه true (1) یا false (0) برمیگردانند.
عملگر | معنی |
---|---|
== | برابر |
!= | نابرابر |
> | بزرگتر |
< | کوچکتر |
>= | بزرگتر یا مساوی |
<= | کوچکتر یا مساوی |
مثال:
int x = 5, y = 10;
cout << (x == y) << endl; // 0
cout << (x != y) << endl; // 1
cout << (x < y) << endl; // 1
۵. عملگرهای منطقی (Logical Operators)
برای ترکیب شرطها:
عملگر | معنی | مثال |
---|---|---|
&& | AND → هر دو شرط درست باشد | (a > 0 && b > 0) |
|| | OR → حداقل یکی درست باشد | (a > 0 || b > 0) |
! | NOT → عکس شرط | !(a > 0) |
مثال:
bool a = true, b = false;
cout << (a && b) << endl; // 0
cout << (a || b) << endl; // 1
cout << (!a) << endl; // 0
۶. عملگرهای بیتی (Bitwise Operators)
کار با بیتهای اعداد صحیح:
عملگر | معنی | مثال |
---|---|---|
& | AND بیتی | a & b |
| | OR بیتی | a | b |
^ | XOR بیتی | a ^ b |
~ | NOT بیتی | ~a |
<< | شیفت به چپ | a << 1 |
>> | شیفت به راست | a >> 1 |
📌 مثال:
unsigned int a = 5; // 0101
unsigned int b = 3; // 0011
cout << (a & b) << endl; // 1
cout << (a | b) << endl; // 7
cout << (a ^ b) << endl; // 6
cout << (a << 1) << endl; // 10
cout << (a >> 1) << endl; // 2
۷. عملگرهای تخصیص (Assignment Operators)
برای مقداردهی و عملیات همزمان:
عملگر | مثال | معادل با |
---|---|---|
= | x = y | مقدار y به x |
+= | x += y | x = x + y |
-= | x -= y | x = x - y |
*= | x *= y | x = x * y |
/= | x /= y | x = x / y |
%= | x %= y | x = x % y |
۸. عملگرهای افزایش و کاهش (++ و –)
دو حالت:
- پیشوندی → مقدار را تغییر میدهد و بعد استفاده میکند.
- پسوندی → اول مقدار جاری را استفاده میکند و بعد تغییر میدهد.
📌 مثال:
int a = 5;
cout << ++a << endl; // 6
cout << a++ << endl; // 6 (بعدش a=7)
cout << a << endl; // 7
۹. عملگرهای خاص
۹.۱ عملگر sizeof
برای گرفتن اندازه یک نوع داده یا متغیر:
cout << sizeof(int) << endl;
int x;
cout << sizeof(x) << endl;
۹.۲ عملگر شرطی ?:
شکل کوتاه if
:
int age = 20;
string result = (age >= 18) ? "Adult" : "Minor";
۹.۳ عملگر ,
(Comma Operator)
چند عمل را در یک خط انجام میدهد، ولی خیلی کم استفاده میشود:
int a, b;
a = (b = 3, b + 2); // b=3, بعد a=b+2=5
۱۰. تقدم عملگرها (Operator Precedence)
وقتی چند عملگر در یک عبارت هستند، تقدم آنها مهم است.
📌 مثال:
int x = 2 + 3 * 4; // اول 3*4 سپس +2
همیشه میتوانید با پرانتز صریح کنید:
int y = (2 + 3) * 4;
۱۱. نکات و هشدارها
⚠ تقسیم دو عدد صحیح همیشه نتیجه صحیح میدهد، حتی اگر حاصل اعشاری باشد.
⚠ مراقب سرریز باشید (خصوصاً در عملگرهای بیتی).
⚠ تقدمها را بهخاطر بسپارید یا از پرانتز استفاده کنید.
⚠ =
و ==
را اشتباه نگیرید.
۱۲. اشتباهات رایج
- نوشتن
if (a = 5)
بهجایif (a == 5)
- تقسیم صفر:
int x = 5 / 0; // ❌ خطای زمان اجرا
- استفاده از عملگر بیتی بهجای منطقی و برعکس:
if (a & b) // ❌ ممکن است نتیجه ناخواسته شود
۱۳. تمرینها
تمرین ۱
برنامهای که دو عدد بگیرد و حاصل جمع، تفریق، ضرب، تقسیم و باقیمانده آنها را چاپ کند.
تمرین ۲
برنامهای بنویسید که سن کاربر را بگیرد و با عملگر شرطی ?:
چاپ کند که کودک است، نوجوان، یا بزرگسال.
تمرین ۳
یک عدد بگیرید و بیتهای آن را با عملگرهای بیتی چرخش دهید (شیفت).
تمرین ۴ (چالش)
محاسبه BMI با استفاده از عملگرهای ریاضی و منطقی (تعیین سالم، کموزن، اضافهوزن).
۱۴. جمعبندی
- عملگرها ابزار کار با دادهها هستند.
- دستهبندی اصلی شامل ریاضی، منطقی، مقایسهای، بیتی، و عملگرهای خاص است.
- تقدم عملگرها را باید بدانید تا نتیجه اشتباه نشود.
- اشتباهات رایج را باید بشناسید تا از خطا جلوگیری کنید.