زبان برنامه نویسی سی/علائم و عملگرهای دیگر و اولویت‌ها: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
صفحه‌ای تازه حاوی «جز پیش‌پردازنده‌ها ، شناسه‌ها ( که شناسه‌ها ، خود می‌توانند ماکروها یا تا...» ایجاد کرد
 
جزبدون خلاصۀ ویرایش
خط ۱:
جز پیش‌پردازنده‌ها ، شناسه‌ها ( که شناسه‌ها ، خود می‌توانند ماکروها یا تابع‌های کتابخانه‌ای باشند ) ، یادداشت‌ها و کلیدواژه‌ها هر آنچه که در زبان C باقی می‌ماند ، عملگر است ؛ جز اینکه کلیدواژه sizeof خود یک عملگر است که در همین موضوع آن را تشریح می‌کنیم . ابتدا عملگرهای دیگری جز عملگرهای یاد شده در سه موضوع پیشین را فهرست می‌کنیم و توضیح می‌دهیم که چه عملی انجام می‌دهند و سپس به نحوه خوانده شدن عبارت‌ها توسط کامپایلر می‌پردازیم که به کمک پرانتزها می‌توان از اینکه کامپایلر عبارت ما را به نحو دیگری بخواند پیشگیری کرد و سپس عملگرهای مقدار دهی را بازگو می‌نمائیم و بعد از آن اولویت عملگرها را که علاوه بر از چپ به راست خوانده شدن عبارت‌ها می‌باشد بیان خواهیم نمود و در نهایت عملگر sizeof را تعریف و تشریح می‌نمائیم
<br>
<br>
 
==عملگرهای جانبی==
 
عملگر '''کروشه''' : عملگرهای کروشه به صورت جفت باز و بسته در مقابل یک شناسه باعث ایجاد یک آرایه به تعداد عددی که داخل جفت کروشه‌های باز و بسته نوشته شده است می‌شود . مثلاً ;int a[6] که باعث ایجاد یک آرایه ۶ عنصر می‌شود و عنصرها از طریق شناسه آن قابل دسترس هستند ( رجوع کنید به موضوع آرایه )
<br><br>
 
عملگر '''پرانتز و آکولاد''' : عملگر پرانتز به صورت جفت باز و بسته در مقابل یک شناسه باعث می‌شود تا شناسه به عنوان تابع تعریف شود که سپس باید بعد از پرانتز بسته یک جفت آکولاد به صورت باز و بسته نوشته شوند که بدنه تابع را تشکیل می‌دهد . ضمناً می‌توان تابع را اعلان نمود ( prototype ) سپس تعریف کرد و هر جا لازم احضار و یا فراخوانی نمود که باز هم با کمک عملگر پرانتز امکان پذیر است ( رجوع کنید به فصل تابع )
<br><br>
 
عملگر '''سمی کالن''' : عملگر ; که نام آن سِمی کالُن ( semi colon ) است پس از هر حکم باعث به اجرا گذاشته شدن آن توسط کامپایلر می‌شود . هر حکم می‌تواند اعلان و یا تعریف متغیرهای پایه ، ترکیبی و یا تابع باشد ( که تابع ممکن است یک تابع کتابخانه‌ای باشد ) مثلاً ;float g
<br><br>
 
عملگر '''نقطه و اشاره‌گر به عضو''' : عملگر « . » یا همان دات و یا نقطه اگر پس از نام برچسب یک ساختمان و یا اجتماع بیاید که پیش از نام یکی از اعضای آن ساختمان یا اجتماع است ، دسترسی به آن شی ( عضو ساختمان یا اجتماع ) را فراهم می‌کند . همچنین عملگر <- باعث می‌شود تا با نوشتن نام یک اشاره‌گر به ساختمان و یا اجتماع پیش از عملگر و نوشتن عضوی از آن ساختمان یا اجتماع ، پس از عملگر ، اشاره‌گر ما به عضو اشاره شده دسترسی پیدا کند . دقت کنید که در نوشتن هیچ کدام از برچسپ و یا نام اشاره‌گر و همچنین عضو ساختمان نباید فاصله‌ای بگذارید ( رجوع کنید به موضوع ساختمان و اجتماع و اشاره‌گر )
<br><br>
 
عملگر '''اشاره و آدرس دهی''' : عملگر * که نام آن استریسک یا همان ستاره است اگر پس از کلیدواژه‌های سازنده داده‌ها بیاید ، داده را به عنوان اشاره‌گر تعریف می‌کند . سپس برای مقدار دهی آن باید از عملگر آدرس دهی استفاده نمود تا با قرار دادن شناسه یک داده دیگر در مقابل آن ، اشاره‌گر به آن داده دیگر اشاره نماید . سپس برای دسترسی به آن داده ، دوباره باید از عملگر استریسک اما این بار بدون نوشتن کلیدواژه‌های سازنده داده‌ها استفاده نمود ( رجوع کنید به موضوع اشاره‌گر )
<br><br>
 
عملگر '''پرانتز برای کست کردن''' : اگر عملگر پرانتز را به صورت یک جفت پرانتز باز و بسته که تعیین کننده یک نوع داده پیش از آن قرار داشته باشد را بنویسم و داخل پرانتزها ، شناسه یک داده را بنویسیم ، کامپایلر با نوع داده داخل پرانتز به عنوان نوع داده پیش از پرانتز باز ، رفتار خواهد نمود ( رجوع کنید به موضوع تبدیل و جایگزینی داده‌ها )
<br><br>
 
عملگرهای '''شرطی''' : عملگر ? و : به عنوان عملگرهای شرطی در زبان C عمل می‌کنند . a ? b : c اگر a درست true یا غیر 0 باشد b به اجرا در می‌آید و اگر a غلط flase یا 0 باشد ، c به اجرا در می‌آید . مثلاً a=5 ? b = 2 : b = 4 در اینجا اگر مقدار a عدد ۵ باشد ، b مقدار ۲ خواهد گرفت و در غیر این صورت b مقدار ۴ خواهد گرفت . به مثال دیگری دقت کنید :
<br>
 
{{چپ‌چین}}
<source lang="C#">
سطر ۲۲ ⟵ ۲۴:
</source>
{{پایان چپ‌چین}}
<br>
 
در مثال بالا کامپایلر ارزیابی می‌کند که اگر a درست true یا غیر 0 باشد b را به اجرا می‌گذارد و اگر نبود c را ارزبابی می‌کند اگر درست true یا غیر 0 بود d را به اجرا می‌گذارد و اگر نبود e را به اجرا می‌گذارد . دقت کنید که کدنویسی‌های پیچیده آگاهی بالایی می‌خواهند و ممکن است شما را به خطا بیاندازند . در ابتدای یاد گیری با کدهای ساده کار کنید و سپس به سراغ کدهای پیچیده‌تر و پیچیده‌تر بروید
<br><br>
 
'''دقت کنید :'''
 
در عملگرهای شرطی ، اگر عملوندها از یک نوع داده باشند ، خروجی‌ای که عملگرهای شرطی باز می‌گردانند ، از همان نوع عملوندها است و شما نمی‌توانید از انواع مختلفی استفاده کنید مگر اینکه : اگر هر یک از عملوندها ، اشاره‌گری به یک داده پوچ باشد ، نتیجه نهایی که عملگرهای شرطی باز می‌گردانند اشاره‌گر به پوچ خواهد بود . اگر عملوندها یکی اشاره‌گر باشد و دیگری اشاره‌گر تهی باشد ، نتیجه نهایی که باز گردانده می‌شود از نوع اشاره‌گری که غیر تهی است خواهد بود . اگر عملوندها نوع داده پوچ دارند ، خروجی از نوع پوچ خواهد بود ؛ به غیر از این ، تبدیل‌های دیگر انجام نمی‌شوند و یا با خطای دیباگر مواجه خواهید و یا برنامه شما معیوب خواهد شد
<br><br>
 
عملگر '''ویرگول''' : عملگر , که نام آن کاما است و در پارسی معنی ویرگول را می‌دهد نقش جدا کننده شناسه‌ها را دارد . جایی که شناسه‌ها را اعلان و یا تعریف می‌کنید می‌توانید با کمک عملگر کاما آنها را از یکدیگر جدا کنید . مثلاً ;int a = 2 , b = 5 , c = 8 . در لیست پارامترهای یک تابع نیز برای تعیین چند پارامتر ، باید نام پارامترها را که شناسه هستند با عملگر کاما از یکدیگر جدا کنید
<br><br>
 
: '''دقت کنید :''' در تمام عملگرهایی که چند عملوند دارند ، عملوندها باید یک نوع داده داشته باشند ( البته برخی از آنها علاوه بر این قانون ، تنها عملوندهای صحیح و یا مثبت و یا صحیح مثبت را می‌پذیرند ) ؛ در غیر این صورت یا کامپایلر آنها را به همدیگر تبدیل می‌کند ( رجوع کنید به تبدیل و جایگزینی داده‌ها ) و یا اخطار می‌دهد ؛ البته به غیر از استثناهایی که در هر موضوع و برای هر عملگر استثناء نوشتیم