قالب وردپرس افزونه وردپرس
خانه / دوره آموزش مقدماتی C و ++C / قسمت چهارم آموزش C – عملگرها

قسمت چهارم آموزش C – عملگرها

عملگرها نمادهایی هستند که برای انجام اعمال خاصی مورداستفاده قرارمیگیرند. عملگرها در زبان C از تنوع زیادی برخوردارند . در C چهار دسته عملگر به نامهای
( محاسباتی ، رابطه ای ، منطقی و دستکاری بیت ها ) وجود دارند که آنها را بررسی می کنیم .

عملگرهای محاسباتی

ردیف | عملگر | نام |

۱ | – | تفریق و منهای یکانی | x-y
۲ | + | جمع | x+y
۳ | * | ضرب | x*y
۴ | / | تقسیم | x/y
۵ | % | باقیمانده تقسیم | x%y
۶ | — | کاهش یک واحد | x– یا –x
۷ | ++ | افزایش یک واحد | x++ یا ++x

عملگرهای ردیف ۱ تا ۴ در جدول تقریبا در همه زبانهای برنامه سازی وجود دارند.

عملگر % که در بقیه زبانها با علامت دیگری ( مثلا در بیسیک به صورت MOD ) وجود دارد باقیمانده تقسیم دو عدد را محاسبه می کند :

; x = 13
; y = 5
; z = x % y
اگر سه دستور فوق را توسط ماشین اجرا کنیم مقدار۳ که باقیمانده تقسیم ۱۳ بر ۵ است در z قرار می گیرد .

دستور –x از x یک واحد کم می کند و نتیجه را در x قرار می دهد که معادل دستور x = x-1 است .

دستور ++x معادل دستور x = x+ 1 است که موجب افزودن یک واحد به x می شود .
اگر در یک عبارت از عملگرهای افزایش و کاهش یک واحد ، استفاده کنیم به کاربردن این عملگرها در قبل و بعد از عملوند مربوطه ، با یکدیگر متفاوت است . بدین معنی که اگر این عملگرها قبل از عملوند باشند مقدار فعلی عملوند مورد استفاده قرار گرفته و سپس عملگرها بر روی آن عمل میکنند ، ولی اگر بعد از عملوند مربوطه باشند پس از انجام عمل افزایش و کاهش یک واحد به آنها مقادیر جدید ، در عبارت مورد استفاده قرار می گیرند. استفاده ازعملگرهای افزایش و کاهش یک واحد ، سرعت محاسباتی را بالا می برد .

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

بالاترین تقدم — | + + | بعد | * / %
پایین ترین تقدم | – | +

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

عملگرهای رابطه ای
عملگرهای رابطه ای برای تشخیص ارتباط بین عملوندها یا مقایسه آنها مورداستفاده قرار می گیرند.

عملگر | نام | مثال

> | بزرگتر | y < x
=>| بزرگتر مساوی | y <= x
< | کوچکتر | x > y
=<|< کوچکتر مساوی | x >= y
== و = | مساوی بودن | x=x==y
!= | نامساوی | x!=y

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

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

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

&& : AND
|| : OR
! : NOT

عملگرهای منطقی ارزش نادرستی درزبان C با مقدار صفر و ارزش درستی با مقادیر غیراز صفر مشخص میشود. عملگر منطقی ! دارای بالاترین تقدم و عملگر || دارای کمترین تقدم در بین عملگرهای منطقی هستند . چون عملگرهای منطقی رابطه نزدیکی با عملگرهای رابطه ای دارند می توان تقدم آنها را نسبت به یکدیگر بیان کرد .

تقدم در عبارات منطقی

بالاترین تقدم | ! | > >= < <= |
| == != |
| && |
پایین ترین تقدم | ||

تقدم عملگرهای منطقی و رابطه ای عملگرهای محاسباتی و رابطه ای با یکدیگر ترکیب شده وعملگرهای دیگری را بنام عملگرهای محاسباتی رابطه ای ایجاد می کنند. تقدم این عملگرها از سایر عملگرها پایین تر است .

عملگر | نام | مثال

+= | انتساب جمع | x+=y
= | انتساب تفریق | x-=y
*= | انتساب ضرب | x*=y
/= | انتساب تقسیم | x/=y
%= | انتساب باقیمانده تقسیم | x%=y

عملگرهای محاسباتی و رابطه ای عبارت x + = y معادل با x = x + y است .

; int a = 10
; int b = 20
; a += b
با اجرای دستورات فوق متغیر a برابر۳۰ خواهد بود. زیرا دستور a + = b معادل دستور a = a + b است .

عملگر دستکاری بیت ها
ازآنجایی که زبان C طوری طراحی شده است که بتواند دربسیاری ازموارد جایگزین زبان اسمبلی گردد. باید قادر باشد کلیه اعمال ( یا حداقل بسیاری از اعمال ) که در زبان اسمبلی قابل انجام هستند را انجام دهد . یکی از اعمالی که در زبان اسمبلی براحتی انجام پذیر است . انجام اعمالی بر روی بیت های یک بایت یا یک کلمه از حافظه است که در زبان C برای انجام این منظورازعملگرهایی استفاده می شود که به عملگرهای بیتی معروفند . این عملگرها انجام اعمال تست ، مقدار دادن و یا انتقال (shift) بیت ها را در یک بایت یا کلمه حافظه امکان پذیر می نمایند. عملگرهای بیتی فقط بر روی متغیرهایی از نوع  char یا int عمل می کنند و بر روی متغیرهایی از نوع float ، double  void و یا سایر متغیرها قابل اجرا نیستند .

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

عملگر | نوع عمل

& | AND ( و )
| | OR ( یا )
^ | XOR ( یا انحصاری )
~ | NOT ( نقیض یا متمم یک )
>> | انتقال به سمت راست (shift right)
<< | انتقال به سمت چپ (shift left)

عملگر ? :
عملگر ? با تست یک شرط ، مقداری را به یک متغیر نسبت می دهد .

عملگرهای & و * :
عملگر & یک عملگر یکانی است که آدرس عملوند خود را مشخص می کند .

عملگر * همانند عملگر & یک عملگر یکانی است که محتویات یک آدرس حافظه را مشخص می کند و به صورت زیر به کار می رود .

عملگر sizeof :
این عملگر که عملگر زمان ترجمه نامیده می شود، برای محاسبه طول یک نوع و یایک متغیر به کار رفته و به صورت زیر استفاده می شود .

تقدم عملگرها در حالت کلی

بالاترین تقدم () , ! , ~ , ++ , — , * , & , sizeof
* / %
+ –
<< >>
<< = >> =
== =!
&
^
|
&&
||
?
= , += , – = , *= , /= , % , =/

درباره ی آریـان پــور

سلام . آریــان پور هستم . از نویسندگان میکروپـدیا .. علاقه مــند به برنامه نویسی و طراحی وب و شبکه ! دیدگاه ها و نظرات شما دوستان بررسی میشه و باعث دلگرمـی برای نوشتن مطالب بهتر و به روزتر . در تماس باشید با : aryanpour [at] micropedia [dot] ir با مـا همراه باشید ..

مطلب پیشنهادی

قسمت بیست و چهارم آموزش C – عملگرهای اشاره گر

این جلسه بسیار ساده و کوتاه خواهد بود. دو عملگر در مورد اشاره گرها مورد …

۱۳ دیدگاه ها

  1. سلام خوب بود
    سپاسگذارم

  2. سلام میشه لطفا تفاوت بینX–با–xوX++با++xرو بگید؟ممنون میشم

  3. وقتی متغیر ها بصورت دابل تعریف شده اند زبان c++ اجازه استفاده از % برای باقیمانده گیری نمیدهد.راه چاره چیه؟

  4. سلام معنی عملگر :: در برنامه نویسی سی چیست و تفاوت << با < چیست
    Int a=1 ; a=a+ :: a;
    Cout<a<<::a;

    • سلام. :: عمگلر تفکیک حوزه در سی پلاس پلاس است و در سی کاربردی ندارد. در سی پلاس پلاس برای پیاده سازی متدها در خارج از کلاس و نیز مقدار دهی کمیت های ایستا کاربرد پیدا می کند.
      >> عملگر جریان خروجی هست و محتوای مقابل خود را به شی cout پاس می دهد تا در خروجی نوشته شود. << عملگر جریان ورودی است و ورودی را در ارگومان مقابل خود کپی می کند.

  5. سلام خسته نباشید.لطفا معنی این عبارت رو بهم توضیح بدین.
    (x^=(1<<y
    ممنون

    • در این عبارت از عملگرهای XOR بیتی و انتقال (شیفت) استفاده شده، برای درک بهتر می توانید این کد را نوشته و اجرا نمایید.

      • عملگر ^ برای xor بیتی هست.

        • بلی. حق با شماست. ^ در متلب به عنوان توان است. در C و ++C عملگر مستقیم رای توان نداریم. با مقدار دهی عددی به عبارت مورد نظر می توانید تاثیر عملگرهای بیتی را برروی متغیر های عددی صحیح مشاهده فرمایید.

  6. خوب بود بعضی جاها رو بیشتر توضیح بدید

  7. آموزش هاتون عالیه .
    مرسی .

پاسخی بگذارید

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

پاسخ عبارت زیر را وارد کنید: *