فصل ۳: عملگرها (Operators) در C++

""

🎯 هدف این فصل

بعد از مطالعه این فصل شما باید بتوانید:

  1. انواع عملگرهای C++ را بشناسید.
  2. عملگرهای ریاضی، مقایسه‌ای، منطقی و بیتی را استفاده کنید.
  3. از عملگرهای افزایش/کاهش، تخصیص، و عملگرهای خاص مثل sizeof و ?: به‌درستی بهره ببرید.
  4. تقدم عملگرها (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 += yx = x + y
-=x -= yx = x - y
*=x *= yx = x * y
/=x /= yx = x / y
%=x %= yx = 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;

۱۱. نکات و هشدارها

⚠ تقسیم دو عدد صحیح همیشه نتیجه صحیح می‌دهد، حتی اگر حاصل اعشاری باشد.
⚠ مراقب سرریز باشید (خصوصاً در عملگرهای بیتی).
⚠ تقدم‌ها را به‌خاطر بسپارید یا از پرانتز استفاده کنید.
= و == را اشتباه نگیرید.


۱۲. اشتباهات رایج

  1. نوشتن if (a = 5) به‌جای if (a == 5)
  2. تقسیم صفر:
int x = 5 / 0; // ❌ خطای زمان اجرا
  1. استفاده از عملگر بیتی به‌جای منطقی و برعکس:
if (a & b) // ❌ ممکن است نتیجه ناخواسته شود

۱۳. تمرین‌ها

تمرین ۱

برنامه‌ای که دو عدد بگیرد و حاصل جمع، تفریق، ضرب، تقسیم و باقیمانده آن‌ها را چاپ کند.

تمرین ۲

برنامه‌ای بنویسید که سن کاربر را بگیرد و با عملگر شرطی ?: چاپ کند که کودک است، نوجوان، یا بزرگسال.

تمرین ۳

یک عدد بگیرید و بیت‌های آن را با عملگرهای بیتی چرخش دهید (شیفت).

تمرین ۴ (چالش)

محاسبه BMI با استفاده از عملگرهای ریاضی و منطقی (تعیین سالم، کم‌وزن، اضافه‌وزن).


۱۴. جمع‌بندی

  • عملگرها ابزار کار با داده‌ها هستند.
  • دسته‌بندی اصلی شامل ریاضی، منطقی، مقایسه‌ای، بیتی، و عملگرهای خاص است.
  • تقدم عملگرها را باید بدانید تا نتیجه اشتباه نشود.
  • اشتباهات رایج را باید بشناسید تا از خطا جلوگیری کنید.
محمد وب‌سایت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *