عملگرها در #C
شناسه پست: 1798
بازدید: 1199

در این مقاله، ما قصد داریم در مورد عملگرها در #C صحبت کنیم. اینکه چطور باید از آنها استفاده کنیم و تفاوت بین آنها چیست.

این مقاله، سرفصلی از دوره آموزشی زیر میباشد:

اگر می خواهید محتویات کامل این دوره را ببینید ، می توانید بر روی لینک مبانی #c کلیک کنید.

در این مقاله، ما موارد زیر را پوشش میدهیم:

انواع عملگرها

رایجترین عملگرها در #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 برمیگرداند.

حال اجازه بدید تا طی یک مثال، این را بیشتر بررسی کنیم:

مثالی از عملگرها در #C

ما در این مثال میبینیم که a در مقایسه با b همچون مقایسه s1 با s2 نتیجه true برمیگردانند. اما student1 با student2 برابر نیستند چون که هریک به مکان متفاوتی در حافظه اشاره میکنند. اما اگر متغیر دیگری از نوع Student ایجاد نماییم و مقدار student1  را به آن اختصاص دهیم در نتیجه عملگر == مقدار true برمیگرداند:

مقایسه متغیرهای refrence-type در #C

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

این عملگرها && (and) و || (or) برای اتصال مقادیر منطقی مورد استفاده قرا میگرند. عبارت حاصل از <عبارت1>&&<عبارت2> فقط در صورتی true برمیگرداند که هر دو عبارت true باشد. عبارت حاصل از <عبارت1>||<عبارت2> فقط در صورتی false برمیگرداند که هردو عبارت false باشد در غیراینصورت true برمیگرداند.

عملگر ! (نقض) مقدار منطقی حاصل از عبارتی را که روی آن اعمال شده است را نقض میکند. این عملگر، نسبت به تمام عملگرهایی که ذکر شد اولویت بالاتری دارد. بنابراین عبارت logicalValue! در صورتی که مقدار true ،logicalValue باشد false برمیگرداند و بالعکس.

حال این را با ذکر یک مثال با هم میبینیم:

عملگرهای افزایشی و کاهشی

در زبان #C، ما میتوانیم از عملگرهایی استفاده کنیم که مقدار متغیرها را 1 عدد افزایش و یا کاهش میدهد. این عملگرها عبارتند از ++ و – – و در خیلی موارد اینها مفید هستند. بنابراین بهترین راه برای نوشتن این کد:

به صورت زیر است:

همچین کد مشابهی برای عملگر – – نیز به کار میرود. این دو عملگر، هم به صورت پیشوند:

variable, ++variable – – و هم به صورت پسوند:  – – variable++, variable مورد استفاده قرار میگرند. اگرچه در هر دو حالت، مقدار درون متغیر 1 واحد تغییر میکند، ولی نتیجه متفاوت خواهد بود. برای اینکه مفهوم مورد نظر را راحت تر بیان کنیم به مثال زیر توجه کنید:

عملگر کاهشی و افزایشی در #C

چیزی را که اینجا ما میتوانیم مورد توجه قرار دهیم این است که در مورد عملگر پیشوند a – – ابتدا مقدار درون a یک واحد کم شده سپس مقدار حاصل درون متغیر b قرار میگیرد. اما نحوه کارکرد عبارت با علامت پسوند متفاوت است. مقدار درون متغیر c ابتدا درون متغیر d قرار میگرد سپس یک واحد از مقدار درون c کم میشود.

همچین مفهومی برای عملگر افزایشی نیز به کار میرود:

عملگر افزایشی در #C

نتیجه گیری

عالی. حالا ما دانش بیشتری در مورد عملگرها در #C را در اختیار داریم. در مقاله بعدی ما قصد داریم در مورد تبدیل نوع های داده ای به یکدیگر در #C صحبت کنیم.

نویسنده

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