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

محتوای حذف‌شده محتوای افزوده‌شده
جزبدون خلاصۀ ویرایش
جزبدون خلاصۀ ویرایش
خط ۱۵۴:
==عملگر sizeof==
 
عملگر sizeof که از اسم آن نیز پیداست ، اندازه و حجم اشغال شده توسط داده‌ای که به عنوان عملوند به آن ارجاع داده می‌شود را در مبنای دهدهی و واحد بایت (Byte) باز می‌گرداند . دقت کنید که sizeof نمی‌تواند اندازه اشغال شده توسط تابع‌ها ، bit-field ها و یا داده‌های ناقص و ناتمام (incomplete types) را بازگرداند ( علیرغم اینکه داده هستند ) ؛ پیش از این به انواع داده ناقص و ناتمام اشاره نمودیم که شامل داده‌های پوچ (void) ، آرایه‌هایی با تعداد عنصرهای نامعین و ساختمان (structure) و یا اجتماعی (union) که داده‌های تعریف نشده دارند و یا در خود ساختمان یا اجتماعی دارند که داده‌های تعریف نشده دارند می‌شود
 
عملگر sizeof را به چند توع می‌توان به کار برد :
خط ۱۶۰:
۱ − نام نوع داده را داخل یک جفت پرانتز باز و بسته در مقابل sizeof می‌نویسید : ;sizeof (float)
 
۲ − نام یک شناسه را که جز شناسه تابع و یا bit-field و یا دادهداده‌ای که ناقص و ناتمام است در مقابل sizeof می‌نویسید : ;sizeof a
 
۳ − یک عبارت را داخل یک جفت پرانتز باز و بسته در مقابل sizeof می‌نویسید ؛ دقت کنید که در این فرایند ، عبارت خروجی نمی‌دهد بلکه فقط در همین حد ارزیابی می‌شود که نوع داده نهایی چه خواهد بود و اندازه آن نوع داده را sizeof باز می‌گرداند مثلاً می‌نویسید :
 
 
خط ۱۷۳:
{{پایان چپ‌چین}}
 
در مثال بالا یک متغیر صحیح که ۴ بایت دارد با یک متغیر اعشاری با دقت دوبرابر که ۱۰۸ بایت دارد جمع شده است ، مهم نیست که نتیجه چه می‌شود ، چون طی تبدیل ، double از int بزرگ‌تر است sizeof مقدار اشغال شده توسط double را باز می‌گرداند ( یعنی عدد ۱۰۸ )
 
در داده‌های ترکیبی مثل ساختمان ، sizeof اندازه اشغال شده توسط کل ساختمان را که شامل فضاهای خالی اضافه نیز می‌شود ، باز می‌گرداند . مقدار بازگردانده شده توسط sizeof یک عدد صحیح بدون علامت است که در اکثر کامپایلرها از نوع داده size_t که در فایل سرآیند stddef تعریف شده است می‌باشد . اینکه size_t چه نوع داده‌ای دارد توسط استاندارد تعریف نشده است اما در اکثر کامپایلرها صحیح بدون علامت unsigned int و یا بلند بدون علامت unsigned long int است
خط ۱۹۹:
{{پایان چپ‌چین}}
 
در مثال بالا فایل سرآیند stddef که سرنام standard definitions می‌باشد را به علت اینکه می‌خواستیم در برنامه از نوع داده size_t استفاده کنیم و البته stdio که سرنام standard Input/Output می‌باشد را جهت استفاده از تابع کتابخانه‌ای printf که سرنام print formatted می‌باشد توسط پیش‌پردازنده include ضمیمه برنامه خود نمودیم . ابتدا یک آرایه صحیح ثابت مختص فایل برنامه فعلی با نام values تعریف نمودیم که چهار عنصر دارد . سپس با کمک پیش‌پردازنده define یک تابع با نام ARRAYSIZE تعریف نمودیم که یک پارامتر دارد با نام x که این x اندازه x است تقسیم بر اندازه یکی از عنصرهای x که تعریف کرده‌ایم اولی باشد ( یعنی عنصر اول که می‌شود اندیس 0 ) سپس در تابع main که تابع اصلی برنامه است یک متغیر از نوع داده size_t با نام i تعریف نموده‌ایم که یک صحیح بدون علامت است . حالا از i که مقدار آن 0 باشد تا زمانی که تابع ARRAYSIZE آرگومان values را می‌پذیرد و مقدار 0 ندارد ، i یک واحد یک واحد افزایش می‌یابد و در هر دفعه ، بلوک خود را به اجرا می‌گذارد که این بلوک چاپ مقدار عنصرهای آرایه values می‌باشد که در خروجی خط‌دستوری نمایش داده خواهد شد
 
[[رده:زبان برنامه نویسی سی]]