زبان برنامه نویسی سی/علائم و عملگرهای دیگر و اولویتها: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جزبدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
خط ۲:
جز پیشپردازندهها ، شناسهها ( که شناسهها ، خود میتوانند ماکروها یا تابعهای کتابخانهای باشند ) ، یادداشتها و کلیدواژهها هر آنچه که در زبان C باقی میماند ، عملگر است ؛ جز اینکه کلیدواژه sizeof خود یک عملگر است که در همین موضوع آن را تشریح میکنیم . ابتدا عملگرهای دیگری جز عملگرهای یاد شده در سه موضوع پیشین را فهرست میکنیم و توضیح میدهیم که چه عملی را انجام میدهند و سپس
<br>
<br>
خط ۶۶:
اگر قسمت ابتدایی موضوع را به یاد داشته باشید ، میدانید که عملگرهای زیادی در C وجود دارند که در ابتدای فصل هم بدان اشاره نمودیم که این عملگرها در زبان C به عنوان عملگر بیان نمیشوند اما علائم زیادی نظیر " و # وجود دارند که در واقع عملگر هستند . اما فراموش نکنید که شما نمیتوانید از آنها در عبارتها استفاده کنید و فقط به شکل و نحوه خاص خودشان مورد استفاده هستند که با مطالعه کامل کتاب نقش هر کدام را خواهید فهمید و اینکه کجا مجاز هستید تا از آنها استفاده کنید ( که در مورد دو مثال نوشته شده ، «"» برای ذخیره یک رشته به کار میرود و «#» برای دادن یک دستور مستقیم )
==خوانده شدن عبارتها==▼
عبارتها توسط کامپایلر با توجه به الویتها و البته از چپ به راست خوانده میشوند اما برای اینکه الویتها را و از چپ به راست خوانده شدن را تغییر دهیم و کاری کنیم تا کامپایلر آنگونه که ما میخواهیم ، عبارت را بخواند باید از پرانتزها استفاده کنیم . برای این منظور زیرعبارتها را آنگونه که میخواهیم لحاظ شوند داخل حفت پرانتزهای باز و بسته میگذاریم که این عمل میتواند تو در تو نیز انجام شود . مثال :▼
{{چپچین}}▼
<code>▼
((( 3 * 7 ) * (2 + 5))/8) + 6 * 2▼
</code>▼
{{پایان چپچین}}▼
همان طور که از علم ریاضی به یاد دارید ، عمل ضرب و تقسیم بر عمل جمع و تفریق ، اولویت دارند و اگر از هم جدا نشده باشند هر کدام که در سمت چپتر قرار داشته باشد زودتر مورد ارزیابی قرار میگیرد . در مثال بالا با کمک پرانتزها کل عبارت را به چند زیر عبارت تقسیم کردهایم که اگر عبارت مقدار ذخیره شده در یک float باشد ، مقدار بازگردانده شده 30.375 خواهد بود چرا که ابتدا 7 * 3 و 5 + 2 مورد ارزیابی قرار میگیرند که حاصل اول 21 و حاصل دومی 7 است که در هم ضرب میشوند و عدد 147 به دست میآید که سپس تقسیم بر 8 میشود که 18.375 به دست خواهد آمد که جمع میشود با 6 * 2 ( که میشود 12 ) و در نهایت عدد 30.375 به دست میآید . اما اگر از پرانتزها استفاده نمیکردیم پاسخ ما 54.625 میشد▼
==عملگرهای مقداردهی==
سطر ۱۰۵ ⟵ ۹۱:
'''دقت کنید :''' عملگرهای مقداردهی ترکیبی فقط بر روی اعداد عمل میکنند و هر کدام ، قوانین عملگر ترکیب شده را در مورد عملوندهای خود انتظار دارند و اگر جز این باشد یا کامپایلر خطا میگیرد یا برنامه شما دارای باگ ( Bug ) خواهد بود
▲==اولویتها و خوانده شدن عبارتها==
▲عبارتها ، توسط کامپایلر با توجه به
▲{{چپچین}}
▲<code>
▲((( 3 * 7 ) * (2 + 5))/8) + 6 * 2
▲</code>
▲{{پایان چپچین}}
▲همان طور که از علم ریاضی به یاد دارید ، عمل ضرب و تقسیم بر عمل جمع و تفریق ، اولویت دارند و اگر از هم جدا نشده باشند هر کدام که در سمت چپتر قرار داشته باشد زودتر مورد ارزیابی قرار میگیرد . در مثال بالا با کمک پرانتزها کل عبارت را به چند زیر عبارت تقسیم کردهایم که اگر عبارت مقدار ذخیره شده در یک float باشد ، مقدار بازگردانده شده 30.375 خواهد بود چرا که ابتدا 7 * 3 و 5 + 2 مورد ارزیابی قرار میگیرند که حاصل
بنابراین « اولویت » یا Precedence به دیرتر یا زودتر لحاظ شدن یک عنصر زبان C میگویند . بالاترین اولویت در یک برنامه C با یادداشتها (Comments) میباشد که هر آنچه بعد از دو اسلش / به صورت // در آن خط قرار گرفته باشد یا هر آنچه بین */ و /* قرار گرفته باشد نادیده گرفته خواهد شد . اولویت بعدی با پیشپردازندهها Preprocessors که با علامت شارپ (Sharp) # آغاز میشوند و زودتر از عنصرهای دیگر سازنده متن برنامه C مورد ارزیابی و لحاظ شدن قرار میگیرند . سپس توابع و حکمها در اولویتها هستند که در آنها ممکن است بخشهایی از عملوندهایی به همراه عملگرهای بازگو شده در این فصل ، استفاده شده باشند که به آنها عبارت میگوئیم . عبارتها میتوانند ترکیبی باشند و یا توسط پرانتزها به چند یا چندین زیر عبارت تقسیم شده باشند که در هر زیر عبارت نیز کامپایلر در نهایت باید با توجه به اولویت عملگرها ؛ زیر عبارتها و در نهایت کل عبارت را ارزیابی نماید
در یک عبارت و یا حتی زیر عبارت ، اولویتها بدین ترتیب میباشند ( که اگر چند عملگر اولویت یکسانی داشته باشند ، آنکه در سمت چپتر قرار دارد زودتر مورد ارزیابی قرار خواهد گرفت ) :
۱ − شناسهها
۲ − رشتهها
۳ − پرانتزهای تابع ، کروشههای آرایه ، عملگرهای انتخاب عضو ساختمان یا اجتماع ( . و <- ) ، عملگرهای افزایش و کاهش پس از شناسه ( ++a و --a )
۴ − عملگر sizeof ، عملگر اشارهگر و آدرس دهی ( * و & ) ، افزایش و کاهش پیش از شناسه ( a++ و a-- ) ، نه منطقی (!) ، نه بیتی (~)
۵ − پرانتزهای کستکردن (int(a))
۶ − ضرب ، تقسیم و باقیمانده ( * و / و % )
۷ − جمع و تفریق ( + و - )
۸ − انتقال بیتی به چپ و راست ( 5>>a و 2<<a )
۹ − عملگرهای مقایسهای ( a < b و a > b و a <= b و a >= b )
۱۰ − عملگرهای تساوی ( a == b a != b )
۱۱ − و بیتی ( a & b )
۱۲ − زور بیتی ( a ^ b )
۱۳ − یا بیتی ( a | b )
۱۴ − و منطقی ( a && b )
۱۵ − یا منطقی ( a || b )
۱۶ − عملگرهای شرطی ( a ? b : c )
۱۷ − عملگرهای مقداردهی ( a = b و a += b و a -= b و a *= b و a /= b و a %= b و a &= b و a ^= b و a |= b و a <<= b و a >>= b )
۱۸ − عملگر کاما برای نادیده گرفتن (a,b)
شما میتوانید با کمک پرانتزهای باز و بسته که میتواند تو در تو نیز باشد ، عبارت خود را به زیر عبارتهایی تقسیم کنید تا زودتر مورد ارزیابی قرار بگیرند و از اینکه کامپایلر کد شما را به گونهای جز آنکه مد نظر شماست بخواند ، جلوگیری کنید
==عملگر sizeof==
[[رده:زبان برنامه نویسی سی]]
|