Home » #C » انواع عملگرها در برنامه نویسی C

انواع عملگرها در برنامه نویسی C

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

انواع عملگرها در برنامه نویسی C

انواع عملگرها در برنامه نویسی C

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

 عملگرها در زبان برنامه نویسی C، به چند دسته تقسیم می شوند:

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

عملگرها بر روی یک یا دو مقدار عمل می‌کنند. مقادیری را که عملگرها بر روی آنها عمل می کنند ، عملوند گویند به عنوان مثال:

۵+۳ :  در این مثال + عملگر می باشد که عمل جمع را انجام می دهد و ۵ ,۳  هر دو عملوندها گویند

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

در کدنویسی برنامه ها، یکی از پرکاربردترین نوع داده ها انواع عددی هستند و قاعدتاً انجام عملیات مقدماتی ریاضیاتی مانند جمع، تفریق، ضرب، تقسیم و … نیز روی این نوع داده ها به دفعات صورت می گیرد. عملگرهایی محاسباتی که تقریباً شبیه به همان نمادهایی هستند که ما در ریاضیات برای انجام این عملیات از آن ها استفاده می کنیم.

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

x = 3;
y = x++;
// x is 4 and y is 3

x = 3;
y = ++x;
// x is 4 and y is 4

در دو مثال بالا مقدار نهای y متفاوت است. در صورتی که عملگر کاهش یا افزایش بعد از متغیر بیاید، حاصل عبارت برابر با مقدار اولیه‌ی متغیر می‌شود، ولی در صورتی که این عملگر‌ها قبل از متغیر استفاده شوند، حاصل عبارت برابر با مقدار تغییر کرده‌ی متغیر می‌شود.

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

۱-۱- عبارات محاسباتی:
عبارت ها، ترکیبی از متغیرها، ثوابت و عملگر ها هستند. ۵*۳ ، ۶-۹ ،۶*۲/۶ همگی عبارت های محاسباتی اند. اگر عملگرهای ++ و – – در عبارات محاسباتی، قبل از عملوند قرار گیرند، ابتدا این عملگرها عمل کرده، نتیجه آن در محاسبات شرکت می کند ولی اگر بعد از عملوند باشد، مقدار فعلی عملوند مورد استفاده قرار می گیرد سپس عملگر بر روی عملوند عمل می کند. برای درک بهتر به مثال زیر توجه کنید:

int x,y ;
x=10 ;
y= ++x;

با اجرای دستور بالا ابتدا مقدار ۱۰ در متغیر x  قرارمی گیرد و سپس یک واحد به عدد ۱۰ اضافه شده و مقدار ۱۱در متغیر y قرار می گیرد.

int x,y ;
x=10 ;
y= x++;

با اجرای کد بالا ابتدا مقدار x  برابر ۱۰ می باشد و سپس همین مقدار ۱۰ در متغیر y  قرار می گیرد و سپس مقدار x بربر ۱۱  می شود.

int x,y,m;
x=10;
y=15;
m= ++x + y++;

با اجرای کد بالا ابتدا یک واحد به مقدار x  اضافه شده (۱۰+۱)، سپس با مقدار y  جمع شده (۱+۱۰+۱۵) و سپس نتیجه ۲۶ در متغیر m قرار می گیرد و در انتها مقدار y یک واحد اضافه می شود یعنی (۱+۱۵).

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

تقدم عملگرها در برنامه نویسی C

 ۲- عملگر های رابطه ای:

همانطور که از اسم این عملگرها مشخصه می باشد ، عملگر های رابطه ای دو مقدار رو باهم مقایسه می کند و رابطه ی دو مقدار رو تعیین، و نتیجه ای که از اجرای این عملگرها به دست می آید همیشه درست یا نادرست می باشد. عملگرهای رابطه ای، ارتباط بین عملوندها را مشخص می کند. اعمالی مثل تصاویر دو مقدار، کوچکتر یا بزرگتر بودن، مقایسه با صفر، و غیره، توسط عملگرهای رابطه ای مشخص می‌شوند. در مورد عملگرهای رابطه ای، شاید با عملگر == آشنایی نداشته باشید این عملگر در دستورات شرطی برای مقایسه دو مقدار مورد استفاده قرار می گیرد. به عنوان مثال ، دستور مقایسه دو مقدار x و y اول باید به صورت آیا x==y است نوشته شود.

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

۳- عملگر های منطقی:
عملگرهای منطقی (Logical Operators) بر روی عبارات منطقی عمل می‌کنند. عبارات منطقی دارای دو ارزش درستی و نادرستی هستند در زبان برنامه نویسی c ارزش نادرستی با مقدار ۰ و ارزش درستی با مقادیر غیر صفر مشخص می‌شود. 

عملگرهای منطقی در زبان برنامه نویسی C

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

صحت عملگر های منطقی در برنامه نویس C

نکته: در عبارت های عطفی (&&) تنها زمانیکه هر دو عبارت درست باشند جواب درست خواهد بود و در غیر اینصورت جواب نادرست می باشد.

در عبارت های فصلی (||) عکس عبارت های عطفی تنها زمانیکه هر دو عبارت نادرست باشند جواب نادرست است و در غیر اینصورت جواب درست می باشد.

int x,y,m,p,q;
x=0;
y=1;
m= x&&y;
p=x||y;
q=!x;

در مثال بالا، m  برابر نادست می باشد، زیرا  x دارای ارزش F و y  دارای ارزش T می باشد. در نتیجه &&  برابر F می شود.

۴- عملگر های ترکیبی:
از ترکیب عملگرهای محاسباتی و علامت = ، مجموعه دیگری از عملگرها ایجاد می شود که عمل محاسباتی و انتساب را انجام می‌دهند. تقدم این عملگرها پایین‌تر از سایر عملگرها می باشد.

تقدم عملگر های منطقی و رابطه ایی در برنامه نویسی Cعملگر های ترکیبی در برنامه نویسی c

۵- عملگر های بیتی:
بر خلاف اکثر زبان ها، زبان برنامه نویسی c روی بیت ها عملیات انجام می دهد. عملگرهای بیتی برای تست کردن، مقدار دادن یا شیفت دادن و سایر اعمال بر روی مقادیری که در یک بایت (char) یا کلمه (int) ذخیره شده اند به کار می روند. عملگرهای بیتی را نمی توان با انواع float، double، long double و void یا سایر انواع پیچیده به کار برد.عملگرهای شیفت، بر روی یک عملوند عمل می‌کنند و بیت های آن را به سمت راست یا چپ شیفت میدهند.

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

شیفت به چپ و راست

۴|۳
 
۰ ۱ ۰  ۰ // ۴
۰ ۰ ۱  ۱ // ۳
----------
۰ ۱ ۱ ۱ // ۷

-------------------------------------------------

۱۵&7
 
۱ ۱ ۱ ۱ // ۱۵
۰ ۱ ۱ ۱ // ۷
------------
۰ ۱ ۱ ۱ // ۷

----------------------------------------------------

~‍‍۸
 
۱ ۰ ۰ ۰  // ۸
--------------- 
۰ ۱ ۱ ۱  // ۷

-----------------------------------------------------
۱۴^۹
 
۱ ۱ ۱ ۰  // ۱۴
۱ ۰ ۰ ۱   //  ۹
-----------
۰ ۱ ۱ ۱  //  ۷
-----------------------------------------------------
۳<<2
 
۰ ۰ ۱ ۱  //  ۳
---------
۱ ۱ ۰ ۰  // ۱۲
-----------------------------------------------------
۱۰>>2
 
۱ ۰  ۱ ۰  // ۱۰
----------
۰  ۰  ۱ ۰ //  ۲
-----------------------------------------------------

 عملکرد عملگرهای بیتی در برنامه نویسی C۶- عملگر های & , *
متغیرها نامی برای کلمات حافظه اند و حافظه نیز دارای شماره ردیف می باشد که ما آنها را آدرس می‌نامیم. با استفاده از عملگر & می‌توانیم به آدرس متغیر ها دسترسی داشته باشیم. عملگر * نیز برای دسترسی غیر مستقیم به حافظه مورد استفاده قرار می گیرد. p= & x   یعنی آدرس x در p  قرار می گیرد.

۷- عملگر  ؟
ابتدا شرط مورد بررسی قرار میگیرد:    

; <عبارت۲> : <عبارت ۱> ؟ <شرط >=متغیر

اگر ارزش آن درست باشد عبارت ۱ برای انتساب مورد استفاده قرار میگیرد.

اگر ارزش آن نادرست باشد عبارت ۲ برای انتساب مورد استفاده قرار میگیرد.

مثال:

int x , y ;

x = 5 ;

y = x > 5 ? x ∗ ۲ : x ∗ ۵ ;

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

; ( < عبارت ۲ > , < عبارت ۱ >) = متغیر

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

x = (a++ , b++)

۹- عملگر  sizeof
عملگر زمان ترجمه است .این عملگر میتواند طول یک متغیر یا نوع داده را بر حسب بایت تعیین کند. به دو روش زیر بکار برده میشود و هنگامی که موع داده مورد استفاده قرار میگیرد باید داخل پرانتز قرار بگیرد. توجه داشته باشید که sizeof یک تابع نیست و می تواند بدون پرانتز هم استفاده شود.

; متغیر sizeof

; (نوع داده) sizeof

مثال:

int x , y , m ;

x = sizeof y ;

m = sizeof (float);

۱۰- عملگر  ()
پرانتز ها عملگرهایی هستند که تقدم عملگرهای داخل خود را بالا میبرند.

اولویت کلی عملگر ها در برنامه نویسی c

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

y=4*2 /(3+1) + (6+(7-2))

برای ارزیابی این عبارت ، ابتدا عبارت موجود در داخلی ترین پرانتز را مورد بررسی قرار می‌دهیم. در این عبارت ترتیب انجام عملیات به این صورت می باشد:

  •  ابتدا عدد ۴ در ۲ ضرب می شود و حاصل آن برابر با ۸
  • بعد از ۲، عملگر تقسیم قرار دارد که دعملوند بعدی آن در داخل پرانتز می باشد. تقدم عملگر + از تقسیم بیشتر است پس ابتدا ۳ با ۱ جمع می شود و حاصل بر ۴ تقسیم می شود و جواب آن ۲ می شود.عملگر بعدی + می باشد ولی بعد آن پرانتز آمده و چون تقدم عملگر های پرانتز بالاتر است، ابتدا ۲ را از  ۷ کم می کنیم که مقدار آن ۵ می شود.
  • ۵ با ۶ جمع می شود که حاصل آن ۱۱ می شود و با مقدار ۲ که از قبل محاسبه شده جمع می شود و حاصل ۱۳ در y  قرار می گیرد.

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

Add a Comment

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