عملگرها در ++C

عملگرها (operator) سمبل هائی هستند که به کامپيوتر فرمان می دهند عملی روی يک يا چند عملوند انجام دهد. عملگرها به يک ،دو يا سه عملوند (operand) نياز دارند تا روی آن عمل کنند.

عملگرهای ++C در چند گروه قرار می گيرند:

    • عملگر انتساب
    • عملگرهای رياضی
    • عملگرهای رابطه ای
    • عملگرهای منطقی

وقتی عبارتی حاوی بيش از يک عملگر باشد به قواعدی نياز است که ترتيب انجام عملگرها را تعيين کند. اين قواعد الويت عملگر(operator precedence) ناميده می شود. هر عملگر الويت خاصی دارد. عملگرهائی که الويت بيشتر دارند اول اجرا می شوند.

با پرانتزها می توان الويت عملگرها را درون عبارت تغيير داد. ارزيابی از داخلی ترين پرانتز شروع می شود. از پرانتز برای روشن تر شدن ترتيب ارزيابی عملگرها استفاده کنيد.

اگر عبارت شامل چند عملگر با الويت يکسان باشد عملگرها از چپ به راست ارزيابی می شوند.

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

عملگر انتساب (assignment operator) علامت مساوی (=) است. به معنی اين است که عبارت سمت راست مساوی (يا rvalue) را به متغير سمت چپ مساوی (يا lvalue) تخصيص بدهد. فرم کلی آن به شکل زير است:

عملگرهای رياضی

عملگرهای رياضی (mathematical operators) عمليات محاسباتی مانند جمع و تفريق را انجام می دهند.

++C دو عملگر يکتائی و پنج عملگر دوتائی دارد. عملگرهای يکتائی تنها يک آرگومان دارد مانند ++ و – – يعنی تنها روی يک متغير عمل می کنند. عملگرهای دوتائی روی دو مقدار کار می کنند مثل + و – .

عملگرهای رياضی يکتائی ++C

عملگر سمبل عمل مثال
Increment ++ عملوند را يک واحد افزايش می دهد ++x, x++
Decrement عملوند را يک واحد کاهش می دهد –x, x–

 عملگرهای رياضی دوتائی ++C

عملگر سمبل عمل مثال
Addition + جمع دو عملوند x + y
Subtraction تفريق عملوند اول از عملوند دوم x – y
Multiplication * ضرب دو عملوند x * y
Division / تقسيم عملوند اول بر علموند دوم x / y
Modulus % باقيمانده صحيح عملوند اول بر عملوند دوم x % y

عملگرهای افزايش و کاهش تنها با متغيرها می توانند استفاده شوند و با ثابت مجاز نيستند. اين عملگرها يک واحد از عملوند کم يا يک واحد به آن اضافه می کنند. يعنی عبارت ;++x معادل ;x=x+1 و عبارت ;–y معادل ;y=y-1 است.

توجه کنيد که عملگرهای افزايش و کاهش می توانند قبل يا بعد از علموند خود قرار گيرند. الويت ++ و – – بستگي به محل متغير دارد. وقتی عملگر بعنوان پيشوند استفاده می شوند عملوند خود را قبل از استفاده تغيير می دهند و وقتی به عنوان پسوند استفاده می شوند عملوند خود را بعد از استفاده از آن تغيير می دهند.

عملگر منهای يکتائی (-) عملوند خود را منفی می کند. عملگر جمع يکتائی (+) تاثيری روی عملوند خود ندارد. کامپايلر از نحوه بکار بردن اين عملگرها د ر عبارت متوجه منظور شما می شود.

مثال.

الویت عملگرهای رياضی

الويت عملگرها
۱ ++ —
۲ * / %
۳ + –

مثال. حاصل عبارت ۱۲ % ۵ * ۲ برابر با ۴ است.

مثال. حاصل عبارت زير ۳- است.

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

عملگرهای رابطه ای (relational operators) در عبارات مقايسه ای استفاده می شوند و يک مقدار بولين توليد می کنند. عبارتی که دارای يک عملگر رابطه ای است به صورت true و false ارزيابی می شوند. اگر رابطه درست باشد مقدار true يا ۱ و اگر غلط باشد مقدار false يا ۰ توليد می شود.

بيشترين کاربرد عبارات رابطه ای در جملات شرطی است.

عملگرهای رابطه ای ++C

عملگر سمبل عمل مثال
Equal == آيا عملوند اول مساوی عملوند دوم است x == y
Greater than < آيا عملوند اول بزرگتر از عملوند دوم است x > y
Less than > آيا عملوند اول کوچکتر از عملوند دوم است x < y
Less than or equal to => آيا عملوند اول کوچکتريا مساوی عملوند دوم است x <= y
Greater than or equal to =< آيا عملوند اول بزرگتريا مساوی عملوند دوم است x >= y
Not equal =! آيا عملوند اول نامساوی عملوند دوم است x != y

مثال. عبارات زير رابطه ای هستند.

نکته. عملگر رابطه ای == را با عملگر = اشتباه نگيريد. يکی از متداولترين اشتباهات برنامه نويسان استفاده از علامت انتساب به جای عملگر مساوی در عبارات شرطی است.

نکته. عباراتی که برابر مقداری غير صفر می شوند به عنوان (۱) true درنظر گرفته می شوند.

مثال. با اجرای جمله زير هميشه پيغام نمايش داده می شود زيرا مقدارx برابر با ۵‌ می شود و شرط هميشه درست می شود.

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

الويت عملگرها
۱ =< => < >
۲ =! ==

عملگرهای رابطه ای الويت کمتری نسبت به عملگرهای رياضی دارند.

مثال. دو شرط زير يکسان است.

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

عملگرهای منطقی (logical operators) اجازه می دهند دو يا چند عبارت رابطه ای را به يک عبارت که حاصل آن بولين است تبديل کنيد.

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

عملگر سمبل مثال
AND && exp1 && exp2
OR || exp1 || exp2
NOT ! !exp1

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

نتيجه عبارت
اگر هردو عبارت exp1 و exp2 درست باشند نتيجه (۱) true است (exp1 && exp2)
اگر عبارت exp1 يا exp2 يا هردو درست باشد نتيجه (۱) true است (exp1 || exp2)
اگر exp1 درست باشد نتيجه (۰) false و اگر غلط باشد نتيجه (۱) true است (exp1!)

مثال.

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

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

الويت عملگرها
۱ !
۲ &
۳ ||

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

عملگرهای بيتی اجازه تغيير بيتهای يک عدد صحيح را می دهند. عملگرهای بيتی مطابق با جبر بولی روی بيتهای عملوندها کار می کنند.

عملگرهای بيتی ++C

عملگر سمبل عمل مثال
And & عملوند اول را بيت به بيت با عملوند دوم and می کند exp1 & exp2
Or | عملوند اول را بيت به بيت با عملوند دوم or می کند exp1 | exp2
Xor ^ عملوند اول را بيت به بيت با عملوند دوم xor می کند exp1 ^ exp2
۱’s Complement ~ مکمل ۲ عملوند را می گيرد ~exp1
Left Shift >> عملوند اول را به اندازه no به سمت چپ شيفت می دهد exp1 << no
Right Shift << عملوند اول را به اندازه no به سمت راست شيفت می دهد exp1 >> no

عملگرهای انتساب ترکيبی

در ++C توسط عملگرهای انتساب ترکيبی روش خلاصه تری برای نوشتن عبارات وجود دارد. به طور کلی عملگرهای انتساب ترکيبی قاعده زير را دارند:

op يک عملگر دوتائی است.

مثال. دو جمله زير معادل هم هستند.

مثال. حاصل متغيرهای x وz هردو برابر با ۱۴ می شود.

عملگر شرطی

عملگر شرطی تنها عملگر سه تائی در C++ است که سه عملوند دارد و فرم کلی آن به صورت زير است:

اگر حاصل عبارت exp1 درست باشد (غير صفر باشد) exp2 و اگر exp1 غلط باشد (برابر با صفر باشد) عبارت exp3 به عنوان نتيجه ارزيابی می شود.

مثال. اگر y غيرصفر باشد مقدار ۱ و اگر صفر باشد مقدار ۱۰۰ به x اختصاص داده می شود.

مثال. عملگر شرطی مشابه يک جمله شرطی عمل می کند.

که مشابه جمله شرطی زير است

مثال. در عبارت زير a برابر با b می شود اگر نتيجه کاهش b غيرصفر باشد. اگر نتيجه صفر شود a و b هردو برابر با مقدار -۹۹ می شوند

عملگر کاما

در حالت های خاصی کاما (,) در نقش يک عملگر کار می کند نه يک جداکننده. يک عبارت را می توان با مربوط کردن دو زيرعبارت توسط کاما شکل داد. هر دو عبارت ارزيابی می شود، ابتدا عبارت سمت چپ محاسبه می شود و نتيجه عبارت سمت راست بعنوان نتيجه کلی عبارت ارزيابی می شود.

مثال. جمله زير به a يکی اضافه می کند و مقدار b را در x قرار می دهد سپس آنرا افزايش می دهد.

عملگر sizeof

تعداد بايت های مورد استفاده هرمتغيريا نوع داده ای را می توان توسط عملگر sizeof بدست آورد.

مثال. برنامه زير تعداد بايت های نوع های double و char را نمايش می دهد.

توجه داشته باشيد که sizeof يک تابع نيست و می تواند بدون پرانتز هم استفاده شود.

عملگرهای آدرس (&) و اشاره گر (* و <-) در بخش اشاره گرها توضيح داده خواهند شد.

عملگرها
الويت
() [] -> . ۱
(type) (indirection)* (address-of)& ! ~ ++ — ۲
(unary)+ (unary)- sizeof
* / % ۳
+ – ۴
<< >> ۵
< <= > >= ۶
== != ۷
(bitwise AND) & ۸
^ ۹
^ ۱۰
&& ۱۱
|| ۱۲
?: ۱۳
= += -= *= /= %= &= ^= |= <<= >>= ۱۴
, ۱۵
عملگرها در ++C
امتیاز دهید

(416 نوشته)

C# Programmer , Web Design And Developer , MVC , ASP.NET

فکر شما چیست؟

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

حاصل جمع اعداد را وارد کنید : *