کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Operators در C++

آموزش عملگرها (Operators) در ++C

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


  • Arithmetic Operators (عملگرهای ریاضی)
  • Relational Operators (عملگرهای رابطه ای)
  • Logical Operators (عملگرهای منطقی)
  • Bitwise Operators (عملگرهای بیتی)
  • Assignment Operators (عملگرهای تخصیص مقدار)
  • Misc Operators (عملگرهای Misc)

مبحث حاضر تمامی عملگرهای نام برده را به تفصیل شرح می دهد.


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

زبان ++C از عملگرهای ریاضی زیر پشتیبانی می کند.

فرض کنید دو متغیر A و B هریک به ترتیب مقادیر 10 و 20 را در خود ذخیره دارند:


مثال
شرح
عملگر
A + B = 30
دو عملوند را در هم جمع می کند
+
A - B = -10
دومین عملوند را از اولین عملوند کسر می کند
-
A * B = 200
دو عملوند را در هم ضرب می کند
*
B / A = 2
دو عملوند را در هم تقسیم می کند. به عبارت دیگر، صورت را در مخرج تقسیم می میکند.
/
B % A = 0
عملگر باقیمانده ی تقسیم
%
A++ = 11
عملگر افزایش که به اندازه ی یک واحد به مقدار عدد صحیح اضافه می کند
++
A-- = 9
عملگر کاهش که به اندازه ی یک واحد از مقدار عدد صحیح کسر می کند
--

عملگرهای رابطه ای (Relational)

++C از عملگرهای رابطه ای ذیل پشتیبانی می کند. با فرض اینکه A=10 و B=20:


مثال
شرح
عملگر
(A == B) صحیح نیست.
بررسی می کند آیا مقدار دو عملوند برابر هستند یا خیر. چنانچه این امر صادق بود، شرط برآورده شده و صحیح می باشد.
==
(A != B) صحیح می باشد.
بررسی می کند آیا مقادیر دو عملوند برابر هستند یا خیر. اگر مقادیر مساوی نباشند، شرط صحیح (صادق) می باشد.
!=
(A > B) صحیح نیست.
بررسی می کند آیا مقدار عملوند چپ از مقدار عملوند راست بزرگتر است یا خیر. اگر چنین بود، شرط صادق بوده و نتیجه trueمی شود.
>
(A < B) صحیح است.
بررسی می کند آیا مقدار عملوند چپ از مقدار عملوند راست کوچکتر است یا خیر. اگر چنین باشد، شرط برآورده و نتیجه صحیح می شود.
<
(A >= B) صحیح است.
بررسی می کند آیا مقدار عملوند سمت چپ بزرگتر یا مساوی مقدار عملوند سمت راست است یا خیر. در صورت صحیح بودن نتیجه ی شرط نیز true می شود.
>=
(A <= B) صحیح است.
بررسی می کند آیا مقدار عملوند چپ کوچکتر یا مساوی مقدار عملوند سمت راست هست یا خیر. چنانچه صحیح باشد، شرط صحیح بوده و خروجی true می شود.
<=

عملگرهای منطقی (Logical)

زبان ++C از عملگرهای منطقی زیر پشتیبانی می کند. به فرض اینکه مقدار A برابر 1 و B مساوی 0 باشد، بنابراین:


مثال
شرح
عملگر
(A && B) غلط / false است.
عملگر منطقی AND نیز نامیده می شود. اگر هر دو عملوند مقداری غیر صفر داشته باشند، آنگاه شرط صحیح می باشد.
&&
(A || B) صحیح / true می باشد.
عملگر منطقی OR خوانده می شود. چنانچه هر یک از دو عملوند مقداری غیر صفر داشته باشند، در آن صورت شرط صحیح می باشد.
||
!(A && B) صحیح است.
عملگر منطقی NOT خوانده می شود. این عملگر به منظور معکوس کردن وضعیت عملوند بکار می رود. بنابراین چنانچه شرطی صحیح باشد، عملگر مزبور آن را غلط یا false می کند.
!

عملگرهای بیتی (bitwise)

عملگرهای بیتی قادر هستند بر روی تک تک بیت‌های یک عدد دودویی یا هر الگوی بیتی دیگری عملیات مختلف انجام دهند. در زیر عملگرهای مختلف بیتی را مشاهده می کنید:


p ^ q
p | q
p & q
q
p
0
0
0
0
0
1
1
0
1
0
0
1
1
1
1
1
1
0
0
1

به فرض اینکه A = 60 و B = 13 باشد، مقدار این دو متغیر با فرمت باینری به صورت زیر خواهد بود:


A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A  = 1100 0011

در زیر شرح هر یک از عملگرهای بیتی ++C را مشاهده می کنید. به فرض اینکه متغیر A برابر 60 و مقدار B برابر 13 باشد، بنابراین:


مثال
شرح
عملگر
نتیجه ی (A & B) برابر 12 و به فرمت دودویی معادل 1100 می باشد.
در صورتی که هر دو بیت مقدار عملوندهایشان 1 باشد، نتیجه 1 می شود. عملگر بیتی مزبور، دو مقدار دودویی با طول مساوی دریافت کرده و بر روی هر دو بیت متناظر، عملیات عطف منطقی را انجام می‌دهد.
&
(A | B) مقدار 61 را تولید می کند که در فرمت باینری برابر 0011 1101 می باشد.
عملگر بیتی OR، دو الگوی بیتی با طول یکسان دریافت کرده و عملیات فصل منطقی را بر روی بیت‌های متناظر انجام می‌دهد. در واقع نتیجه زمانی 0 می باشد که عملوندهای مستقر در بیت های متناظر 0 باشد.
|
(A ^ B) نتیجه ی 49 را بدست می دهد که در فرمت باینری معادل 0011 0001می باشد.
عملگر XOR بیتی، دو الگوی بیتی با طول یکسان دریافت کرده و عملیات یای انحصاری را بر روی بیت‌های متناظر انجام می‌دهد. نتیجه وقتی 1 است که اگر فقط اولین بیت 1باشد یا فقط دومین بیت 1 باشد. در صورتی که هر دو 1 یا هر دو 0 باشند، نتیجه 0 خواهد بود.
^
(~A ) مقدار -61 را بدست می دهد که در فرمت مکمل دو معادل 1100 0011 می باشد. چرا که عدد دودویی علامت دار می باشد.
این عملگر بیتی یگانی، بیت ها را برعکس (flip) می کند به طوری که اگر 0 باشد آن را 1 و اگر 1 باشد آن را صفر می کند.
~
A << 2 مقدار 240 را تولید می کند که در فرمت بانیری معادل 0000 1111 می باشد.
عملگر شیفت بیتی به چپ نام دارد. مقدار عملوندهای چپ به تعداد بیت هایی که عملوند راست مشخص می کند، به سمت چپ رانده می شوند.
<<
A >> 2 مقدار 15 را می دهد که در فرمت باینری برابر 0000 1111 می باشد.
عملگر دودویی انتقال بیت ها به راست. مقدار عملوندهای چپ، به تعداد بیت هایی که عملوند راست مشخص می کند، به سمت راست حرکت داده می شوند.
>>

عملگرهای تخصیص یا انتساب مقدار (Assignment)

زبان ++C از عملگرهای تخصیص زیر پشتیبانی می کند:


مثال
شرح
عملگر
C = A + B مقدار A+B (حاصل جمع دو عملوند) را داخل متغیر C ذخیره می کند.
یک عملگر انتساب ساده که مقادیر عملوندهای سمت راست را داخل متغیر سمت چپ قرار می دهد.
=
می باشد.C += A معادل C = C + A
یک عملگر انتساب که مقدار عملوند سمت راست را به مقدار عملوند چپ اضافه کرده و سپس نتیجه را به عملوند سمت چپ اختصاص می دهد.
+=
C -= A معادل C = C – A می باشد.
این عملگر مقدار عملوند سمت راست را از مقدار عملوند سمت چپ کسر کرده و نتیجه را به عملوند چپ تخصیص می دهد.
-=
C *= A برابر C = C * A می باشد.
این عملگر تخصیص مقدار عملوند راست را در عملوند چپ ضرب کرده و نتیجه را به عملوند چپ تخصیص می دهد.
*=
C /= A معادل C = C / Aمی باشد.
عملگر ترکیبی حاضر مقدار عملوند سمت چپ را بر عملوند سمت راست تقسیم کرده و نتیجه را به عملوند سمت چپ انتساب می دهد.
/=
C %= A معادل C = C % A می باشد.
عملگر ترکیبی جاری (باقیمانده تقسیم) مقدار عملوند سمت راست را در عملوند سمت چپ تقسیم کرده و باقی مانده ی تقسیم را در عملوند سمت چپ (متغیر) قرار می دهد.
%=
C <<= 2 در واقع همان C = C << 2 می باشد.
شیفت به چپ و تخصیص، بیت ها را به تعداد تعیین شده به سمت چپ رانده و نتیجه را داخل متغیر ذخیره می کند.
<<=
C >>= 2 در واقع با C = C >> 2 یکسان می باشد.
شیفت به راست و تخصیص، بیت ها را به تعداد مشخص شده به سمت راست رانده و نتیجه را داخل متغیر جایگذاری می کند.
>>=
C &= 2 با C = C & 2 یکسان است.
عملگر ترکیبی AND و تخصیص
&=
C ^= 2 در واقع همان C = C ^ 2 است.
عملگر بیتی انحصاری OR و تخصیص مقدار
^=
C |= 2 با C = C | 2 یکسان است.
عملگر بیتی inclusive و انتساب مقدار
|=

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

تعدادی عملگر دیگر در زبان ++C وجود دارد که در زیر به شرح آن ها می پردازیم.


شرح
عملگر
عملگرsizeof میزان حافظه ای که متغیر اشغال می کند را برمی گرداند. به عنوان مثال دستور sizeof(a)، در حالی که a یک عدد صحیح است، مقدار 4 را به عنوان خروجی برمی گرداند.
sizeof
عملگر شرطی. اگر شرط صحیح یا true باشد، مقدار X را برمی گرداند. در غیر این صورت مقدار Y را بازگردانی می کند.
Condition ? X : Y
عملگر Comma سبب می شود دنباله ای از عملیات پشت سرهم اجرا شوند. مقدار کل عبارت، برابر است با مقدار آخرین عبارت از لیست که با ویرگول از هم جدا شده اند.
,
عملگرهای عضو به منظور دسترسی و اشاره به اعضای فردی کلاس ها، structure ها و union ها بکار می روند.
. (dot) and -> (arrow)
عملگرهای تبدیل یاCast که داده ای را از یک نوع به نوع دیگری تبدیل می کند. به عنوان مثال، دستور int(2.2000) خروجی 2 را برمی گرداند.
Cast
pointer operator / عملگر اشاره گر & آدرس واقعی متغیر در حافظه را به عنوان خروجی بازگردانی می کند. به عنوان مثال، &a;، آدرس واقعی متغیر را در بازمی گرداند.
&
Pointer operator یا عملگر *، در واقع اشاره گری به () یک متغیر می باشد.
*

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

برخی عملگرها بر عملگرهای دیگر در اولویت اجرا برتری دارند. بدین معنی که در یک عبارت محاسباتی ابتدا عملگرهای با اولویت بالاتر اجرا و محاسبه می شوند. به طور مثال عملگر ضرب، دارای اولویت اجرای بالاتری نسبت به عملگر جمع می باشد:
در اینجا x = 7 + 3 * 2;، سرانجام مقدار 13 (و نه 20) داخل متغیر x ریخته می شود، بدین ترتیب که ابتدا 3*2 محاسبه شده و سپس حاصل در مقدار 7 جمع می شود.
در مثال حاضر، عملگرهایی که بالاترین اولویت اجرا را دارند در بالای جدول ذکر شده و به همین ترتیب تا پایین ادامه می یابد. داخل یک عبارت محاسباتی، عملگرهایی که اولویت اجرای بالاتری دارند، طبیعتا اول ارزیابی و محاسبه می شوند.


Associativity
عملگر
دسته ی مربوطه
چپ به راست
() [] -> . ++ - -
Postfix
راست به چپ
+ - ! ~ ++ - - (type)* & sizeof
Unary
یگانی
چپ به راست
* / %
Multiplicative
راست به چپ
+ -
Additive
راست به چپ
<< >>
Shift
راست به چپ
< <= > >=
Relational
عملگر رابطه ای
راست به چپ
== !=
Equality
عملگر برسی برابری
چپ به راست
&
Bitwise AND
AND بیتی
چپ به راست
^
Bitwise XOR
XOR بیتی
چپ به راست
|
Bitwise OR
OR بیتی
چپ به راست
&&
Logical AND
AND منطقی
چپ به راست
||
Logical OR
OR منطقی
راست به چپ
:?
Conditional
شرطی
چپ به راست
= += -= *= /= %=>>= <<= &= ^= |=
Assignment
تخصیص یا انتساب مقدار
چپ به راست
,
Comma
ویرگول
1396/04/08 6569 1261
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...