در این مقاله، ما قصد داریم در مورد عملگرها در #C صحبت کنیم. اینکه چطور باید از آنها استفاده کنیم و تفاوت بین آنها چیست.
این مقاله، سرفصلی از دوره آموزشی زیر میباشد:
- راه اندازی محیط توسعه
- Data Type ها، Declaration ها و تعریف متغیرها در #C
- عملگرها در #c
- تبدیل نوع های داده ای
- ورودی و خروجی در #c
- کار با رشته ها
- شرطها در #c
- حلقه ها (While، Do-While، For)
- مدیریت خطاها
- Access Modifier ها
- متدها
- کلمات کلیدی Ref و Out
- بازگشت و متدهای بازگشتی
- آرایه ها (آرایه های تک بعدی و چند بعدی)
- کار با فایلها، StreamWriter و StreamReader
- کار با فایلها، File و Directory
اگر می خواهید محتویات کامل این دوره را ببینید ، می توانید بر روی لینک مبانی #c کلیک کنید.
در این مقاله، ما موارد زیر را پوشش میدهیم:
انواع عملگرها
رایجترین عملگرها در #C عبارتند از:
عملگرهای محاسباتی
این عملگرها برای نوع های داده ای عددی تعریف شده اند. عملگرهای +, -, *, / نشان دهنده ی عملیات پایه محاسباتی باینری (جمع،تفریق، ضرب و تقسیم) است. عملگر % برای بدست آوردن باقیمانده حاصل از تقسیم استفاده میشود. نکته ای که باید مدنظر قرار داد این است که عملگر + برای نوع های رشته ای و عددی متفاوت عمل میکند. در مورد اعداد، نتیجه عبارت 5 + 5 برابر با 10 است. اما در مورد رشته ها، نتیجه عبارت “5” + “5” برابر با “55” میباشد. بنابراین در مورد نوع عددی، آن یک عملگر جمع به حساب می آید در حالیکه در مورد رشته ها، آن یک عمگر الحاقی است.
عملگرهای رابطه ای
تمام عمگرهای رابطه ای، یک نتیجه true یا false برمیگردانند. این عملگرها برای مقایسه بین عبارتها یا متغیرها در دو طرف خودشان استفاده میشود. این عملگرها، اولوت کمتری نسبت به عملگرهای محاسباتی دارند. بنابراین در این مثال: x*a-8*b>y+5*z; سمت چپ عمگر < اول محاسبه شده، سپس سمت راست محاسبه میشود و در نهایت نتایج با یکدیگر مقایسه میشوند.
برای متغیرهای value-type و رشته ها، عملگر == (تساوی) فقط در صورتی true برمیگرداند که مقدار دو طرف عملگر یکسان باشد، در غیر اینصورت false برمیگرداند. اما اگر عملگرها reference type باشند، عملگر == فقط در صورتی true برمیگرداند که هردو متغیر به یک مکان در حافظه اشاره کنند، در غیر اینصورت false برمیگرداند.
حال اجازه بدید تا طی یک مثال، این را بیشتر بررسی کنیم:
ما در این مثال میبینیم که a در مقایسه با b همچون مقایسه s1 با s2 نتیجه true برمیگردانند. اما student1
با student
2 برابر نیستند چون که هریک به مکان متفاوتی در حافظه اشاره میکنند. اما اگر متغیر دیگری از نوع Student
ایجاد نماییم و مقدار student1
را به آن اختصاص دهیم در نتیجه عملگر == مقدار true برمیگرداند:
عملگرهای منطقی
این عملگرها && (and) و || (or) برای اتصال مقادیر منطقی مورد استفاده قرا میگرند. عبارت حاصل از <عبارت1>&&<عبارت2> فقط در صورتی true برمیگرداند که هر دو عبارت true باشد. عبارت حاصل از <عبارت1>||<عبارت2> فقط در صورتی false برمیگرداند که هردو عبارت false باشد در غیراینصورت true برمیگرداند.
عملگر ! (نقض) مقدار منطقی حاصل از عبارتی را که روی آن اعمال شده است را نقض میکند. این عملگر، نسبت به تمام عملگرهایی که ذکر شد اولویت بالاتری دارد. بنابراین عبارت logicalValue! در صورتی که مقدار true ،logicalValue باشد false برمیگرداند و بالعکس.
حال این را با ذکر یک مثال با هم میبینیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class Program { static void Main(string[] args) { int a = 14; int b = 30; int c = 20; if(a < b && a < c) { Console.WriteLine($"min number is {a}"); } if(a < b || a < c) { Console.WriteLine("The a variable is smaller then b or c"); } if(!(a > b)) { Console.WriteLine("a is less than b"); } } } |
عملگرهای افزایشی و کاهشی
در زبان #C، ما میتوانیم از عملگرهایی استفاده کنیم که مقدار متغیرها را 1 عدد افزایش و یا کاهش میدهد. این عملگرها عبارتند از ++ و – – و در خیلی موارد اینها مفید هستند. بنابراین بهترین راه برای نوشتن این کد:
1 2 3 4 5 |
static void Main(string[] args) { int a = 15; a = a + 1; //now it is 16 } |
به صورت زیر است:
1 2 3 4 5 |
static void Main(string[] args) { int a = 15; a++; //now it is 16 } |
همچین کد مشابهی برای عملگر – – نیز به کار میرود. این دو عملگر، هم به صورت پیشوند:
variable, ++variable – – و هم به صورت پسوند: – – variable++, variable مورد استفاده قرار میگرند. اگرچه در هر دو حالت، مقدار درون متغیر 1 واحد تغییر میکند، ولی نتیجه متفاوت خواهد بود. برای اینکه مفهوم مورد نظر را راحت تر بیان کنیم به مثال زیر توجه کنید:
چیزی را که اینجا ما میتوانیم مورد توجه قرار دهیم این است که در مورد عملگر پیشوند a – – ابتدا مقدار درون a یک واحد کم شده سپس مقدار حاصل درون متغیر b قرار میگیرد. اما نحوه کارکرد عبارت با علامت پسوند متفاوت است. مقدار درون متغیر c ابتدا درون متغیر d قرار میگرد سپس یک واحد از مقدار درون c کم میشود.
همچین مفهومی برای عملگر افزایشی نیز به کار میرود:
نتیجه گیری
عالی. حالا ما دانش بیشتری در مورد عملگرها در #C را در اختیار داریم. در مقاله بعدی ما قصد داریم در مورد تبدیل نوع های داده ای به یکدیگر در #C صحبت کنیم.