زبان برنامه نویسی سی/متغیرها: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
جزبدون خلاصۀ ویرایش
خط ۴۸:
=== متغیر های عددی ===
 
از ابتدای کتاب یادآور گشتیم که چند بار استاندارد سی تعریف شده است ، اما علاوه بر آن کامپایلرها هر کدام اندازه مختص خود را برای متغیرها اختصاص می‌دهند . مثلاً متغیری از نوع صحیح یعنی int در اولین استاندارد تنها یک بایت باید در حافظه جا اشغال می‌نمود ، بعدها به دو بایت افزایش یافت و در حال حاضر در سیستم‌هایی با پردازشگرهای ۳۲ بیتی حدید و یا با پردازشگرها ۶۴ بیتی ، یک int طبق استاندارد ،باید چهار بایت را باید اشغال نماید . با این حال برخی کامپایلرها اندازه‌های دیگری را اختصاص می‌دهند . ابتدا کامپایلر خود را تست کنید تا ببینید که چه قدر برای هر نوع متغیر اختصاص می دهد :
 
{{چپ‌چین}}
خط ۱۰۷:
علامت کالن یعنی « , » یک عملگر می‌باشد که وظیفه آن جدا کردن کدها می‌باشد ، کاربرد آن در این قطعه کد برای جدا کردن نام متغیرها و همچنین مقادیر آنها بود . اگر آن را فراموش کنید ، توسط کامپایلر به صورت یکپارچه خوانده خواهد شد که اگر فاصله‌ای هم بین آنها باشد مطمئناً کامپایلر خطا خواهد گرفت . پس وجود آن ضروری می‌باشد . همچنین علامت سمی کالن یعنی « ; » به معنی پایان دهنده و فاسخ می‌باشد . وظیفه آن که در انتهای حکم می‌آید ، پایان دادن به قطعه‌ای از کد و به اجرا گذاشتن آن می‌باشد . این عملگر از زبان های اسمبلی سطح بالا توسط زبان سی به ارث برده شده است . بنابراین زمانی که شما یک سمی کالن را قرار می‌دهید ، هر آنچه که پیش از آن نوشته شده است به صورت مجزا به اجرا در می‌آید که در اینجا یک متغیر را ایجاد می‌نماید و در صورت داشتن مقدار ، مقدار آن را داخل حافظه جای می‌دهد . پس نوشتن غیر ضروری آن یک خطای بارز خواهد بود و توسط کامپایلر به شما گوشزد خواهد گردید . در ایجاد و استفاده عملیاتی از داده‌ها و همین طور در پایان توابع کتابخانه ای باید از علامت سمی کالن استفاده نمائید و وجود آن ضروری می باشد ولی استفاده غیر ضروری از آن منجر به خطا در کامپایل برنامه شما خواهد گردید
 
در جدول زیر انواع داده‌های عددی به همراه فضای اشغال شده در حافظه توسط آنها ( مطابق با استاندارد سی ) و بازه اعدادی که می‌توانید در آنها جای دهید برای سیستم‌های ۳۲ بیتی قدیمی نوشته شده است :
 
{{چپ‌چین}}
خط ۱۳۴:
{{پایان چپ‌چین}}
 
در سیستم‌هایی با پردازشگرهای جدید ۳۲ بیتی و یا ۶۴ بیتی ، تنها تفاوتی که وجود دارد این است که int به اندازه long در سیستم‌های ۳۲ بیتی قدیمی است ( یعنی ۴ بایت ) و long به اندازه long long ( یعنی ۸ بایت ) است . بنابراین signed int به اندازه signed long و unsigned int به اندازه unsigned long و signed long به اندازه signed long long و unsigned long به اندازه unsigned long long است و long long در سیستم‌های ۶۴ بیتی همانند سیستم‌های ۳۲ بیتی کهنه است
 
متغیر هایی که از نوع اعشاری هستند ، همانطور که از اسمشان پیداست ، جهت ذخیره کردن اعداد اعشاری به کار می‌روند . بنابراین اگر قصد ایجاد یک عدد اعشاری را ندارید ، بیهوده از آنها استفاده ننمائید ( چرا که دارای قسمت اعشاری خواهند شد ) و تنها زمانی دست به ایجاد متغیرهایی از نوع عدد اعشاری بزنید که به آنها نیاز داشته باشید ، آن هم دقیقاً متناسب با مقدار مورد نیاز خود . متغیر های float دقت کم‌تری نسب به double و در نهایت نسبت به long double دارند ، اگر قسمت اعشار عدد مورد نیاز شما خیلی ارقام زیادی ندارد از همان float استفاده کنید ، اگر زیاد است از double و اگر خیلی زیاد است از long double