آموزش C (بخش 4) :: عملگرها
عملگرها نمادهایی هستند که برای انجام اعمال خاصی مورداستفاده قرارمیگیرند. عملگرها در زبان C از تنوع زیادی برخوردارند . در C چهار دسته عملگر به نامهای ( محاسباتی ، رابطه ای ، منطقی و دستکاری بیت ها ) وجود دارند که آنها را بررسی می کنیم . عملگرهای محاسباتی: ردیف | عملگر | نام | مثال |
۱ | - | تفریق و منهای یکانی | x-y
2 | + | جمع | x+y
3 | * | ضرب | x*y
4 | / | تقسیم | x/y
5 | % | باقیمانده تقسیم | x%y
6 | - - | کاهش یک واحد * | - -x یا x
۷ | ++ | افزایش یک واحد * | x+ + یا | + +xا
* decrement ** increment جدول (۱) . عملگرهای محاسباتی عملگرهای ردیف ۱تا ۴ در جدول (۱) تقریبا” در همه زبانهای برنامه سازی وجود دارند. عملگر % که در بقیه زبانها با علامت دیگری ( مثلا” در بیسیک به صورت MOD) وجود دارد باقیمانده تقسیم دو عدد را محاسبه می کند : اگر سه دستور فوق را توسط ماشین اجرا کنیم مقدار۳ که باقیمانده تقسیم ۱۳ بر ۵ است در z قرار می گیرد . x= 10 ;
- - x ;
دستور x - - از x یک واحد کم می کند و نتیجه را در x قرار می دهد که معادل دستور x = x-1 است . x= 40 ;
x ++ ;
دستور ++x معادل دستور x = x + 1 است که موجب افزودن یک واحد به x می شود . بالاترین تقدم - - | + + |
جدول (۲) . تقدم عملگرهای محاسباتی همان طور که در جدول (۲) مشاهده می شود ، عملگرهای افزایش و کاهش یک واحد دارای بالاترین تقدم و عملگرهای جمع و تفریق دارای کمترین تقدم هستند و منهای یکانی ، دارای دومین تقدم است . عملگرهایی که در یک سطر آمده اند ، مثل - و + عملگرهای رابطه ای : نکته قابل ذک درمورد عملگرهای رابطه ای این است که عملگر== برای تشخیص مساوی بودن دو عبارت مورد استفاده قرار می گیرد. این عملگر با عملگر= که برای انتساب یک عبارت به یک متغیر استفاده می شود متفاوت است . عملگرهای منطقی ارزش نادرستی درزبان C با مقدار صفر و ارزش درستی با مقادیر غیراز صفر مشخص میشود. عملگر منطقی ! دارای بالاترین تقدم و عملگر || دارای کمترین تقدم در بین عملگرهای منطقی هستند . چون عملگرهای منطقی رابطه نزدیکی با عملگرهای رابطه ای بالاترین تقدم: | ! |
جدول (۵) . تقدم عملگرهای منطقی و رابطه ای عملگرهای محاسباتی و رابطه ای با یکدیگر ترکیب شده و عملگرهای دیگری را بنام عملگرهای محاسباتی رابطه ای ایجاد می کنند ( جدول (۶) ) . تقدم این عملگرها از سایر عملگرها پایین تر است . عملگر | نام | مثال |
+= | + انتساب جمع | x+=y |
= | انتساب تفریق | x-=y |
*= | * انتساب ضرب | x*=y |
/= | / انتساب تقسیم | x/=y |
%= | % انتساب باقیمانده تقسیم | x%=y |
جدول (۶) . عملگرهای محاسباتی و رابطه ای
در جدول (۶) ، عبارت x + = y معادل با x = x + y است . int a=10 ;
int b=20 ; a+= b ; با اجرای دستورات فوق متغیر a برابر۳۰ خواهد بود. زیرا دستور a + = b معادل دستور a = a + b است . عملگر دستکاری بیت ها: عملگرهای بیتی &، |،و ~و(AND(، OR،و NOTو) مشابه عملگرهای منطقی AND، OR،و NOTو عمل می کنند با این تفاوت که عمل آنها بر روی یک بیت است . با فرض این که pو qو دو بیت مختلف باشند ، نحوه عمل عملگر ^ را در ذیل مشاهده می نمایید . 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | عملگرهای بیتی در جدول (۷) مشاهده می شوند . همان طور که مشاهده شد ، نتیجه عملگر بیتی ^ وقتی یک (۱) است که یکی از عملوندهای آن صفر و دیگری یک باشد . به عبارت دیگر ، نتیجه عملگر بیتی ^ وقتی صفر است که هر دو عملوند آن صفر و یا هر دو یک باشند . مثال ۱ : | x=7 ; | 00000111 | 7 | | x<<1 ; | 00001110 | 14 | | x<<3 ; | 01110000 | 112 | | x<<2 ; | 11000000 | 192 | | x>>1 ; | 01100000 | 96 | | x>>2 ; | 00011000 | 24 | همان طور که مشاهده می کنید پس از اجرای دستور ۲<< x< اطلاعات واقعی از بین می روند و مساله ضرب در ۲ شدن ، در اینجا صدق نمی کند . مثال ۲ : x :00101100 ~x :11010011
~x :00101100 همان طور که مشاهده می شود بیت های ردیف اول و ردیف آخر دارای یک وضعیت میباشند ( بیت های ردیف آخر نتیجه دوبار اجرای عملگر نقیض بر روی متغیر است ). عملگر ? x= 10;
y= x>9 ? 100 : 200 ;
نحوه عمل در دو دستور فوق به این صورت است که عبارت ۹> x> ارزیابی می شود . چون این عبارت یک ارزش منطقی true دارد عملگرهای &و * int num ;
p= &num ;
با اجرای دستورات فوق آدرس متغیر num در متغیر p قرار می گیرد. لذا عملگر & به معنی ” آدرس ” است . عملگر * همانند عملگر & یک عملگر یکانی است که محتویات یک آدرس حافظه را مشخص می کند و به صورت زیر به کار می رود . p= &num ;
m= *p ;
دستور اول ، آدرس متغیر num را در p قرار میدهد و دستور دوم ، محتویات محلی را که آدرس آن در p قرار دارد ( محتویات num ) ، را در m قرار میدهد. بنابراین مفهوم ” * محتویات آدرس ” می باشد . دو دستور فوق معادل دستور m = num; است که موجب انتقال محتویات متغیر num به متغیر m می شود . عملگر کاما (,) x =( y = 3 , y + 5) ; ابتدا y باربر با ۳ قرار می گیرد و نتیجه عبارت y + 5 که برابر ۸ است در x قرار خواهد گرفت . عملگر sizeof int a, b, c ;
a= sizeof( int) ;
b= sizeof c ;
تقدم عملگرها در حالت کلی بالاترین تقدم: () | | ! ~ + + - - * & sizeof |
جدول (۸) . تقدم عملگرها در حالت کلی اگر در یک عبارت چندین عملگر وجود داشته باشد و درآن از پرانتز نیز استفاده شود ، تقدم پرانتز از سایر عملگرها بیشتر بوده و عبارت داخل پرانتز زودتر ارزیابی می شوند . مثال ۳ : int x=5/ y=10/ k=4 ;
int s ;
s= x*((x+y-)3)/k ;
![]() مرتبط با موضوع : آموزش c++(ساختار های کنترلی - حلقه while) [پنجشنبه، 1 دي ماه ، 1390] آموزش c++(ساختار های کنترلی) [پنجشنبه، 1 دي ماه ، 1390] آموزش c++(نحوه تغییر متغییرها) [پنجشنبه، 1 دي ماه ، 1390] آموزش C++ (تعریف و معرفی متغییرها) [پنجشنبه، 1 دي ماه ، 1390] نوشتن اولین برنامه با ++C [سه شنبه، 4 مرداد ماه ، 1390] آموزش C (بخش 3) :: متغیرها در زبان C [دوشنبه، 19 بهمن ماه ، 1388] آموزش C (بخش 2) :: انواع داده [دوشنبه، 19 بهمن ماه ، 1388] آموزش C (بخش 1) :: مقدمات زبان C [دوشنبه، 19 بهمن ماه ، 1388] مقدمه ای بر زبان C [دوشنبه، 19 بهمن ماه ، 1388] ساختمان زبان C و چند تابع ورودی خروجی [دوشنبه، 19 بهمن ماه ، 1388] |
آخرین مقالات
پربیننده ترین مقالات
مقالات تصادفی
امتیاز دهی به مطلب
تعداد آراء: 1 ![]() انتخاب ها
|
