سی شارپ - عملگر ها

یک عملگر علامتی است که به کامپایلر می گوید یک عملیات ریاضی خاص یا تغییر منطقی را انجام دهد. در سی شارپ عمگرهایی در نظر گرفته شده اند که دسته بندی آنها در زیر آورده شده است.

  • عملگرهای محاسباتی
  • عملگرهای رابطه ای
  • عملگرهای منطقی
  • عملگرهای بیتی
  • عملگرهای انتصاب
  • عملگرهای متفرقه

در این آموزش عملگر های محاسباتی، منطقی،رابطه ای ، بیتی، انتصاب و غیره ، تک تک توضیح داده می شوند

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

جدول زیر تمامی عملگرهای محاسباتی موجود در سی شارپ را نشان میدهد. در نظر بگیرید که متغیر A مقدار 10 و متغیر B مقدار 20 را در خورد نگه داری می کند.

نمایش مثال ها

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

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

جدول زیر تمامی عملگرهای رابطه ای موجود در سی شارپ را نشان می دهد. در نظر بگیرید که متغیر A مقدار 10 و متغیر B مقدار 20 را در خورد نگه داری می کند.

نمایش مثال ها

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

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

جدول زیر تمامی عملگرهای منطقی موجود در سی شارپ را نشان میدهد. در نظر بگیرید که متغیر A مقدار true و متغیر B مقدار false را در خورد نگه داری می کند.

نمایش مثال ها

عملگر مثال مثال
&& این عملگر یا AND در صورتی مقدار True بر می گرداند که هر دو عملوند مقدار غیر صفر بر گردانند (A && B) is false.
|| این عملگر یا ORدر صورتی مقدار True بر می گرداند که یک از دو عملوند مقدار غیر صفر بر گردانند (A || B) is true.
! این عملگر یا NOT، نتیجه یک عبارت Boolean را برعکس می کند، یعنی اگر یک عبارت نتیجه true برگرداند، این عملگر نتیجه را به false تبدیل می کند: !(A && B) is true.

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

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

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 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

جدول زیر تمامی عملگرهای بیتی موجود در سی شارپ را نشان می دهد. در نظر بگیرید که متغیر A مقدار 60و متغیر B مقدار 13 را در خورد نگه داری می کند.

نمایش مثال ها

عملگر توضیحات مثال
& برای عملگر & در صورتی که هر دو بیت 1 باشند، خروجی 1 خواهد بود. در غیر اینصورت خروجی 0 خواهد شد. نام این عملگر AND می باشد. (A & B) = 12, which is 0000 1100
| نام دیگر این عملگر OR می باشد و خروجی آن، در صورتی که یکی از بیت ها معادل 1 باشد، 1 خواهد بود، در غیر اینصورت بیت نتیجه 0 خواهد شد (A | B) = 61, which is 0011 1101
^ نام دیگر این عملگر XOR می باشد و بیت خروجی در صورتی 1 خواهد بود که بیت های معادل با یکدیگر تفاوت داشته باشند (A ^ B) = 49, which is 0011 0001
~ کار مکمل یک در سیستم باینری را انجام می ده (~A ) = 61, which is 1100 0011 in 2's complement due to a signed binary number.
<< عملیات شیفت به چپ را انجام می دهد. A << 2 = 240, which is 1111 0000
>> عملیات شیفت به راست را انجام می دهد. A >> 2 = 15, which is 0000 1111

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

در زیر عملگرهای انتصاب در سی شارپ آورده شده است

نمایش مثال ها

عملگر توضیحات مثال
= عملگر ساده ی انتصاب است که مقدار سمت راست را در متغیر سمت چپ کپی می کند C = A + B assigns value of A + B into C
+= مقدار دو عملوند را با یکدیگر جمع کرده و در عملوند سمت چپ کپی می کند C += A is equivalent to C = C + A
-= مقدارعملوند سمت راست را از عملوند سمت چپ کم کرده و نتیجه را در عملوند سمت چپ کپی می کند C -= A is equivalent to C = C - A
*= مقدار دو عملوند را با در یکدیگر ضرب کرده و در عملوند سمت چپ کپی می کند C *= A is equivalent to C = C * A
/= مقدارعملوند سمت چپ را برعملوند سمت راست تقسیم کرده و نتیجه را در عملوند سمت چپ کپی می کند C /= A is equivalent to C = C / A
%= مقدارعملوند سمت چپ را برعملوند سمت راست تقسیم کرده و باقیمانده را در عملوند سمت چپ کپی می کند C %= A is equivalent to C = C % A
<<= عملیات شیفت به چپ را انجام می دهد. C <<= 2 is same as C = C << 2
>>= عملیات شیفت به راست را انجام می دهد. C >>= 2 is same as C = C >> 2
&= معادل عمگر AND بیتی است و نتیجه را در عملوند سمت چپ نگه می دارد C &= 2 is same as C = C & 2
^= معادل عمگر OR بیتی است و نتیجه را در عملوند سمت چپ نگه می دارد C ^= 2 is same as C = C ^ 2
|= معادل عمگر OR بیتی است و نتیجه را در عملوند سمت چپ نگه می دارد C |= 2 is same as C = C | 2

عملگر های متفرقه

در سی شارپ های مهم دیگری مانند sizeof, typeof و ? نیز وجود دارند.

نمایش مثال ها

عملگر توضیحات مثال
sizeof() اندازه ی یک نوع داده را بر میگرداند sizeof(int), returns 4.
typeof() نوع یک کلاس را بر می گرداند typeof(StreamReader);
& آدرس یک متغیر را بر میگرداند &a; returns actual address of the variable.
* اشاره گری به یک متغیر را بر می گرداند *a; creates pointer named 'a' to a variable.
? : دستورات شرطی If Condition is true ? Then value X : Otherwise value Y
is مشخص می کند که آیا یک شی از یک نوع خاصی است یا خیر If( Ford is Car) // checks if Ford is an object of the Car class.
as یک عملیات تبدیل را انجام می دهد. و درصورتی مه امکان تبدیل وجود نداشته باشد خطا می دهد Object obj = new StringReader("Hello");

StringReader r = obj as StringReader;

حق تقدم عملگر ها در سی شارپ

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

برای مثال x = 7 + 3 * 2; را در نظر بگیرید.مقدار x بعد از انجام عملیات برابر با 13 خواهد بود نه 20. زیرا عملگر * از اولویت بالاتری نسبت به عملگر + برخوردار است.بنابراین ابدا عمل ضرب و سپس جمع انجام می شود

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

نمایش مثال ها

دسته بندی عملگر شرکت پذیری
Postfix () [] -> . ++ - - Left to right
Unary + - ! ~ ++ - - (type)* & sizeof Right to left
Multiplicative * / % Left to right
Additive + - Left to right
Shift << >> Left to right
Relational < <= > >= Left to right
Equality == != Left to right
Bitwise AND & Left to right
Bitwise XOR ^ Left to right
Bitwise OR | Left to right
Logical AND && Left to right
Logical OR || Left to right
Conditional ?: Right to left
Assignment = += -= *= /= %=>>= <<= &= ^= |= Right to left
Comma , Left to right