خانه / دوره آموزش مقدماتی 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
    ممنون

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

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

پاسخ دهید

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

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