دوره‌ها / آموزش برنامه‌نویسی C / عملگرها (C Operators)

عملگرها (C Operators)

20 دقیقه Article

عملگرها در C: موتورِ محرکِ محاسبات ⚙️⚡

عملگرها (Operators) نمادهایی هستند که رویِ مقادیر یا متغیرها عملیات انجام می‌دهند. C مجموعه‌یِ کاملی از عملگرهایِ ریاضی و منطقی را در اختیارِ شما می‌گذارد.

۱. عملگرهایِ محاسباتی (Arithmetic)

  • +, -, *, /: اعمالِ پایه.
  • %: باقیمانده‌یِ تقسیم (Modulo). فقط رویِ اعدادِ صحیح کار می‌کند.
  • ++, --: افزایش یا کاهشِ یک واحدی.

۲. عملگرهایِ انتسابی (Assignment)

برایِ ریختنِ مقدار در متغیر: =. همچنین میانبرهایی مثل +=, -= و... وجود دارند.

۳. عملگرهایِ بیتی (Bitwise) - مخصوصِ حرفه‌ای‌ها!

اینجاست که قدرتِ C مشخص می‌شود. شما می‌توانید مستقیماً رویِ بیت‌ها کار کنید:

  • & (AND), | (OR), ^ (XOR), ~ (NOT)
  • << (Shift Left), >> (Shift Right)
اولویتِ عملگرها (Precedence): درست مثل ریاضی، ضرب و تقسیم زودتر از جمع و تفریق انجام می‌شوند. برایِ کنترلِ دقیقِ ترتیب، حتماً از پرانتز () استفاده کنید.

مثالِ باقیمانده:

{code_block('int r = 10 % 3; // r برابر است با 1')}
سرعتِ شیفت: شیفت دادنِ بیت‌ها به سمتِ چپ (<<) یکی از سریع‌ترین راه‌ها برایِ ضربِ یک عدد در ۲ است!
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسیِ متغیرها و مدیریتِ حافظه 🧱⚙️⚡

در زبانِ C، متغیرها فقط نام‌هایی برایِ ساده‌سازی نیستند؛ آن‌ها نماینده‌یِ آدرس‌هایی در حافظه‌یِ فیزیکی (RAM) هستند. درکِ نحوه‌یِ ذخیره‌سازیِ داده‌ها، مرز بینِ یک کدنویسِ معمولی و یک توسعه‌دهنده سیستم است.

۱. ترتیبِ بایت‌ها (Endianness)

وقتی یک عددِ ۴ بایتی (مثل int) در حافظه ذخیره می‌شود، بایت‌ها به چه ترتیبی قرار می‌گیرند؟

  • Little-Endian: بایتِ کم‌ارزش در آدرسِ کمتر ذخیره می‌شود (رایج در پردازنده‌های x86 و ARM).
  • Big-Endian: بایتِ پُرارزش در آدرسِ کمتر ذخیره می‌شود (رایج در شبکه‌ها و برخی پردازنده‌های قدیمی).

۲. نمایشِ اعدادِ اعشاری (IEEE 754)

اعدادِ اعشاری در C (مثل float و double) بر اساسِ استانداردِ IEEE 754 ذخیره می‌شوند. این استاندارد عدد را به سه بخش تقسیم می‌کند:

  1. Sign (علامت): ۱ بیت برای مثبت یا منفی بودن.
  2. Exponent (توان): برای مشخص کردنِ بزرگیِ عدد.
  3. Mantissa (مانتیس): برای مشخص کردنِ دقتِ عدد.

۳. کلاس‌هایِ ذخیره‌سازی (Storage Classes)

هر متغیر در C علاوه بر "نوع"، یک "کلاسِ ذخیره‌سازی" هم دارد که طولِ عمر و حوزه‌یِ دسترسیِ آن را مشخص می‌کند:

  • auto: پیش‌فرض برای متغیرهای محلی.
  • statice: مقدارِ خود را بینِ فراخوانی‌هایِ تابع حفظ می‌کند.
  • extern: برای دسترسی به متغیری که در فایلِ دیگری تعریف شده است.
  • register: به کامپایلر پیشنهاد می‌دهد متغیر را در ثبات‌هایِ CPU نگه دارد (برایِ سرعتِ فوق‌العاده).
نکته مهندسی: همیشه از sizeof() برای پیدا کردنِ اندازه‌یِ واقعیِ یک متغیر در سیستمِ خود استفاده کنید. اندازه‌یِ int در یک سیستمِ ۱۶ بیتی با یک سیستمِ ۶۴ بیتی می‌تواند متفاوت باشد!

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

عملگر باقیمانده Easy
سوال تمرین

باقیمانده‌ی تقسیم عدد 17 بر 5 را حساب کرده و چاپ کنید.

پاسخ تمرین
C
#include <stdio.h>

int main() {
  printf("%d", 17 % 5);
  return 0;
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.