سلام به همه دوستداران برنامه‌نویسی! امروز می‌خوایم درباره عملگرها در زبان برنامه‌نویسی C صحبت کنیم. این آموزش به شما کمک می‌کنه تا با مثال‌های مختلف، انواع عملگرها رو بهتر بشناسید.

به زبان ساده، عملگر یه نماده که روی مقادیر یا متغیرها (که بهشون عملوند می‌گیم) عملیاتی رو انجام می‌ده. مثلاً، علامت + برای جمع استفاده میشه. زبان C کلی عملگر مختلف داره که هر کدوم کار خاصی انجام میدن.

با عملگرهای حسابی در C آشنا بشیم

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

معنی عملگر ریاضی
جمع یا مثبت یگانی +
تفریق یا منفی یگانی
ضرب *
تقسیم /
باقیمانده تقسیم %

مثال ۱: کار با عملگرهای حسابی

بیایید یه مثال رو با هم بررسی کنیم:

// کار با عملگرهای ریاضی
#include <stdio.h>

int main()
{
    int num1 = 15, num2 = 6, result;

    result = num1 + num2;
    printf("num1 + num2 = %d\n", result);

    result = num1 - num2;
    printf("num1 - num2 = %d\n", result);

    result = num1 * num2;
    printf("num1 * num2 = %d\n", result);

    result = num1 / num2;
    printf("num1 / num2 = %d\n", result);

    result = num1 % num2;
    printf("Remainder when num1 divided by num2 = %d\n", result);

    return 0;
}

خروجی این کد به شکل زیره:

num1 + num2 = 21
num1 - num2 = 9
num1 * num2 = 90
num1 / num2 = 2
Remainder when num1 divided by num2 = 3

عملگرهای + ، – و * دقیقاً همونطور که انتظار دارید، جمع، تفریق و ضرب رو انجام میدن.

شاید براتون سوال باشه که چرا در تقسیم 15 / 6 خروجی 2 هست به جای 2.25؟ دلیلش اینه که هر دو متغیر num1 و num2 از نوع عدد صحیح (int) تعریف شدن، پس نتیجه محاسبات هم یه عدد صحیح میشه. کامپایلر قسمت اعشاری رو نادیده میگیره و فقط بخش صحیح رو نشون میده.

عملگر % باقی‌مانده تقسیم رو حساب می‌کنه. مثلاً، باقی‌مانده تقسیم num1 = 15 بر num2 = 6 برابر با 3 هست. یادتون باشه که این عملگر فقط با اعداد صحیح کار می‌کنه.

حالا فرض کنید که num_a = 7.0 ، num_b = 3.0 ، num_c = 7 و num_d = 3. در برنامه‌نویسی C، نتایج به این صورت خواهند بود:

// در اینجا حداقل یکی از عملوندها اعشاری است
num_a / num_b = 2.333333
num_a / num_d = 2.333333
num_c / num_b = 2.333333
// هر دو عملوند عدد صحیح هستند
num_c / num_d = 2

عملگرهای افزایشی و کاهشی در C

تو برنامه‌نویسی C، دو عملگر خیلی کاربردی داریم: ++ برای افزایش و -- برای کاهش. عملگر ++ مقدار یه متغیر رو یه واحد زیاد می‌کنه، در حالی که -- یه واحد ازش کم می‌کنه. این عملگرها از نوع عملگرهای یگانی (unary) هستن، یعنی فقط روی یه عملوند کار می‌کنن.

مثال ۲: کار با عملگرهای افزایشی و کاهشی

بیایید این عملگرها رو در عمل ببینیم:

// کار با عملگرهای افزایشی و کاهشی
#include <stdio.h>

int main()
{
    int x = 12, y = 98;
    float m = 11.5, n = 99.5;

    printf("++x = %d\n", ++x);
    printf("--y = %d\n", --y);
    printf("++m = %f\n", ++m);
    printf("--n = %f\n", --n);

    return 0;
}

خروجی:

++x = 13
--y = 97
++m = 12.500000
--n = 98.500000

تو این مثال، عملگرهای ++ و -- به عنوان پیشوند استفاده شدن. اما میشه ازشون به عنوان پسوند (بعد از متغیر) هم استفاده کرد؛ مثل x++ و y--.

فرقشون چیه؟ وقتی به عنوان پسوند استفاده میشن، اول مقدار فعلی متغیر برگردونده میشه و بعد یه واحد تغییر می‌کنه، برعکس در حالت پیشوند ابتدا مقدار متغیر تغییر می‌کنه سپس آن را برمی‌گرداند. بیایید یه مثال دیگه ببینیم:

// کار با عملگرهای افزایشی و کاهشی به عنوان پسوند
#include <stdio.h>

int main()
{
    int x = 12, y = 98;
    float m = 11.5, n = 99.5;

    printf("x++ = %d\n", x++);
    printf("x = %d\n", x);

    printf("y-- = %d\n", y--);
    printf("y = %d\n", y);

    printf("m++ = %f\n", m++);
    printf("m = %f\n", m);

    printf("n-- = %f\n", n--);
    printf("n = %f\n", n);

    return 0;
}

خروجی:

x++ = 12
x = 13
y-- = 98
y = 97
m++ = 11.500000
m = 12.500000
n-- = 99.500000
n = 98.500000

عملگرهای انتساب در C

عملگر انتساب برای اختصاص دادن یه مقدار به یه متغیر استفاده میشه. رایج‌ترین عملگر انتساب، همون = هست.

مشابه با مثال عملگر انتساب
a = b a = b =
a = a+b a += b +=
a = a-b a -= b -=
a = a*b a *= b *=
a = a/b a /= b /=
a = a%b a %= b %=

مثال ۳: کار با عملگرهای انتساب

بیایید چند تا مثال از عملگرهای انتساب رو ببینیم:

// کار با عملگرهای انتساب
#include <stdio.h>

int main()
{
    int val = 8, res;

    res = val; // 8
    printf("res = %d\n", res);

    res += val; // res = res + val = 8 + 8 = 16
    printf("res = %d\n", res);

    res -= val; // res = res - val = 16 - 8 = 8
    printf("res = %d\n", res);

    res *= val; // res = res * val = 8 * 8 = 64
    printf("res = %d\n", res);

    res /= val; // res = res / val = 64 / 8 = 8
    printf("res = %d\n", res);

    res %= val; // res = res % val = 8 % 8 = 0
    printf("res = %d\n", res);

    return 0;
}

خروجی این کد به شرح زیر است:

res = 8
res = 16
res = 8
res = 64
res = 8
res = 0

عملگرهای رابطه‌ای در C

عملگرهای رابطه‌ای برای مقایسه دو عملوند و بررسی رابطه بینشون استفاده میشن. اگه رابطه برقرار باشه، مقدار 1 (به معنی درست) برمی‌گردونن و اگه برقرار نباشه، مقدار 0 (به معنی نادرست) رو برمی‌گردونن. این عملگرها تو تصمیم‌گیری‌ها و حلقه‌ها خیلی به کار میان.

مثال توضیح عملگر رابطه‌ای
7 == 4 نادرست است و 0 برمی‌گرداند. مساوی با ==
7 > 4 درست است و 1 برمی‌گرداند. بزرگتر از >
7 < 4 نادرست است و 0 برمی‌گرداند. کوچکتر از <
7 != 4 درست است و 1 برمی‌گرداند. نامساوی !=
7 >= 4 درست است و 1 برمی‌گرداند. بزرگتر یا مساوی >=
7 <= 4 نادرست است و 0 برمی‌گرداند. کوچکتر یا مساوی <=

مثال ۴: کار با عملگرهای رابطه‌ای

بیایید این عملگرها رو تو کد ببینیم:

// کار با عملگرهای رابطه ای
#include <stdio.h>

int main()
{
    int val1 = 7, val2 = 7, val3 = 12;

    printf("%d == %d is %d\n", val1, val2, val1 == val2);
    printf("%d == %d is %d\n", val1, val3, val1 == val3);

    printf("%d > %d is %d\n", val1, val2, val1 > val2);
    printf("%d > %d is %d\n", val1, val3, val1 > val3);

    printf("%d < %d is %d\n", val1, val2, val1 < val2);
    printf("%d < %d is %d\n", val1, val3, val1 < val3);

    printf("%d != %d is %d\n", val1, val2, val1 != val2);
    printf("%d != %d is %d\n", val1, val3, val1 != val3);

    printf("%d >= %d is %d\n", val1, val2, val1 >= val2);
    printf("%d >= %d is %d\n", val1, val3, val1 >= val3);

    printf("%d <= %d is %d\n", val1, val2, val1 <= val2);
    printf("%d <= %d is %d\n", val1, val3, val1 <= val3);

    return 0;
}

خروجی:

7 == 7 is 1
7 == 12 is 0
7 > 7 is 0
7 > 12 is 0
7 < 7 is 0
7 < 12 is 1
7 != 7 is 0
7 != 12 is 1
7 >= 7 is 1
7 >= 12 is 0
7 <= 7 is 1
7 <= 12 is 1

عملگرهای منطقی در C

یه عبارت شامل عملگر منطقی بر اساس اینکه درست یا غلط باشه، مقدار 0 یا 1 رو برمی‌گردونه. تو برنامه‌نویسی C، معمولاً از عملگرهای منطقی برای تصمیم‌گیری‌ها استفاده میشه.

مثال توضیح عملگر
اگر c = 5, d = 2 باشد آنگاه عبارت

((c==5) && (d>5)) نادرست است و 0 برمی‌گرداند.

AND منطقی (“و”).

اگر همه عملوندها درست باشند، عبارت درست است.

&&
اگر c = 5, d = 2 باشد آنگاه عبارت

((c==5) || (d>5)) درست است و 1 برمی‌گرداند.

OR منطقی (“یا”).

اگر حداقل یکی از عملوندها درست باشد،

عبارت درست است.

||
اگر c = 5 باشد آنگاه عبارت

(c==5)! نادرست است و 0 برمی‌گرداند.

NOT منطقی (“مخالف”).

اگر عملوند نادرست باشد،

عبارت درست است.

!

مثال ۵: کار با عملگرهای منطقی

بریم سراغ مثال کد برای عملگرهای منطقی:

// کار با عملگرهای منطقی
#include <stdio.h>

int main()
{
    int p = 6, q = 6, r = 15, logicResult;

    printf("(p == q) && (r > q) is %d\n", (p == q) && (r > q));
    printf("(p == q) && (r < q) is %d\n", (p == q) && (r < q));
    printf("(p == q) || (r < q) is %d\n", (p == q) || (r < q));
    printf("(p != q) || (r < q) is %d\n", (p != q) || (r < q));
    printf("!(p != q) is %d\n", !(p != q));
    printf("!(p == q) is %d\n", !(p == q));

    return 0;
}

خروجی:

(p == q) && (r > q) is 1
(p == q) && (r < q) is 0
(p == q) || (r < q) is 1
(p != q) || (r < q) is 0
!(p != q) is 1
!(p == q) is 0

توضیح برنامه عملگر منطقی

  • (p == q) && (r > q) درست ارزیابی میشه زیرا هر دو عملوند درست هستند.
  • (p == q) && (r < q) نادرست ارزیابی میشه زیرا عملوند (r < q) نادرست است.
  • (p == q) || (r < q) درست ارزیابی میشه زیرا عملوند (p = q) درست است.
  • (p != q) || (r < q) نادرست ارزیابی میشه زیرا هر دو عملوند نادرست هستند.
  • !(p != q) درست ارزیابی میشه زیرا عملوند (p != q) نادرست است در نتیجه مخالف آن یعنی !(p != q) درست است.
  • !(p == q) نادرست ارزیابی میشه. زیرا عملوند (p == q) درست است در نتیجه مخالف آن یعنی!(p == q) نادرست است.

عملگرهای بیتی در C

میدونستید که خیلی از عملیات ریاضی مثل جمع، تفریق، ضرب و تقسیم، در سطح بیتی انجام میشن؟ این باعث میشه که پردازش سریع‌تر باشه و مصرف انرژی هم کمتر بشه. تو برنامه‌نویسی C، برای انجام این عملیات در سطح بیت، از عملگرهای بیتی (Bitwise) استفاده میشه.

توضیحات عملگر بیتی
AND بیتی &
OR بیتی |
XOR بیتی ^
NOT بیتی ~
شیفت چپ <<
شیفت راست >>

سایر عملگرها

عملگر کاما

عملگر کاما برای به هم چسبوندن عبارت‌های مرتبط استفاده میشه. مثلاً:

int num1, num2 = 10, num3;

عملگر sizeof

sizeof یه عملگر یگانیه که اندازه یه داده (مثل ثابت‌ها، متغیرها، آرایه‌ها، ساختارها و...) رو برمی‌گردونه.

مثال ۶: استفاده از sizeof

بیایید ببینیم چطور میشه از sizeof استفاده کرد:

#include <stdio.h>

int main()
{
    int i;
    float f;
    double d;
    char c;

    printf("Size of int = %lu bytes\n", sizeof(i));
    printf("Size of float = %lu bytes\n", sizeof(f));
    printf("Size of double = %lu bytes\n", sizeof(d));
    printf("Size of char = %lu byte\n", sizeof(c));

    return 0;
}

خروجی:

Size of int = 4 bytes
Size of float = 4 bytes
Size of double = 8 bytes
Size of char = 1 byte

در آموزش‌های بعدی، درباره بقیه عملگرها مثل عملگر سه‌گانه ?: ، عملگر ارجاع & ، عملگر اشاره به متغیر * و عملگر انتخاب عضو -> صحبت خواهیم کرد.

امیدواریم این آموزش براتون مفید بوده باشه! این مقاله توسط سایت علمی رایشمند برای شما آماده شده است.