داده های صحیح،مقدار ثابت صحیح در زبان c

مجموعه: آموزش, دانش و فناوری تعداد بازدید: 367 تاریخ : ۶ آبان ۱۳۹۳

دانلود نرم افزار Dev-cpp جهت کامپایل کدهای زبان C

داده های صحیح
زبان C از لحاظ بزرگی عناصر و همچنین از نظر نمایش داخلی آنها استاندارد ویژه ای به کار نمی برد. به طور کلی اعداد صحیح مثبت، منفی و صفر و نیز متغیرهایی که مقادیر صحیح را می پذیرند، ۱۶ یا ۳۲بیت حافظه اشغال میکنند. فرم اولیه داده هایی از نوع صحیح، یا همان int مقدار صحیح در نظر گرفته میشود. اما اندازه یا بزرگی آن برحسب نوع ماشین و کامپایلر فرق می کند.
در هنگام تعریف متغیرهای از نوع int توصیف کننده های signed ،long ،short، unsigned و یا ترکیبی از آنها نیز ممکن است به کار رود.

داده هایی که با این کلمات توصیف میشوند، ممکن است از کامپایلری به کامپایلر دیگر تفسیر متفاوت داشته باشند، ولی اساس آنها یکسان است. اگر مقادیر صحیح در کامپایلری در حالت عادی ٢ بایت باشد، بین short int و int فرقی نخواهد بود و هر دو ١۶ بیت یا ٢ بایت حافظه اشغال میکنند. در ضمن short int را میتوان فقط به صورت short نیز به کار برد (یعنی پیش فرض آن است که short همان short int است). در چنین حالتی long int نیز ۴ بایت حافظه اشغال خواهد کرد که آن را هم میتوان فقط به صورت long به کار برد (یعنی در اینجا نیز پیش فرض آن است که long همان long int است). ولی چنانچه مقادیر صحیح در حالت عادی ۴ بایت حافظه اشغال کنند، short int یا فقط ٢ short بایت حافظه به کار خواهد برد. اما بین long int و int (یا فقط long) تفاوتی وجود نخواهد داشت و هر دو ۴ بایت حافظه اشغال خواهند کرد.

در مواردی متغیرها، فقط دارای مقادیر غیرمنفی خواهند بود. مثلاً متغیری که برایشمارش به کار می رود، یکی از این موارد و همیشه مثبت است. زبان C اجازه میدهد کهاینگونه متغیرها را با به کار بردن توصیف کننده unsigned، بدون علامت اعلان کنیم. یک مقدار صحیح بدون علامت از نظر میزان حافظه اشغالی با مقدار صحیح معمولی فرقی ندارد. تفاوت میان آنها در بیت سمت چپ است که بیت علامت نامیده میشود و در مورد مقادیر صحیح بدون علامت، این بیت نیز مثل سایر بیتها برای نمایش مقدار عدد به کار میرود و در نتیجه مقادیر صحیح بدون علامت همیشه غیرمنفی است و بزرگی آن ممکن است تقریباً تا دو برابر مقدار صحیح معمولی باشد. برای مثال عدد صحیح معمولی از ٣٢٧۶٨- تا ٣٢٧۶٧+ (در مورد مقادیر صحیح دو بایتی) تغییر میکند، بنابراین مقدار صحیح بدون علامت از صفر تا ۶۵۵٣۵تغییر خواهد کرد.

در استاندارد ریچی توصیف کننده signed وجود ندارد. ولی استاندارد ANSI آن را پشتیبانی میکند. در اغلب موارد به صورت پیشفرض، متغیرها signed اند. بنابراین، به استفاده از توصیف کننده signed در آنها نیازی نخواهد بود. در اغلب مفسرها پیشفرض برای داده های کاراکتری signed char است.

متغیرهایی که معرف اعداد صحیح اند به صورت های زیر توصیف میشوند.

short int
int
unsigned int
signed int
long int
unsigned long int
unsigned short int

مثال ٢ـ١ در زیر نمونه هایی از نحوه معرفی متغیرهایی از نوع مقادیر صحیح نمایش داده شده است.

۱) long int temp , Pnoor ;
۲) short int y1 , y2 , y3 ;
۳) unsigned int m , n ;
۴) unsigned long sum , average ;
۵) unsigned short pt , qt ;

تعریف متغیرها از نوع long int و long هم ارز است، بنابراین مثال ١ را میتوان به صورت ; long temp , Pnoor نوشت. همچنین short int و short نیز معادل هماند. پس مثال ٢ را میتوان به صورت ; short y1 , y2 , y3 نوشت. مثال ٣ را نیز میتوان این طور نوشت:

.unsigned m , n ;

مقادیر ثابت صحیح

در زبان C یکی دیگر از انواع داده ها، مقادیر ثابت صحیح است. یک مقدار ثابت صحیح عدد و یا دنباله ای از ارقام است که در مبنای ۱۰ ،۸ و یا ۱۶ تعریف شده باشد. اعداد زیر نمونه هایی از اعداد با مقادیر ثابت صحیح در مبنای ۱۰ اند.

۳۶۹۲۵ , ۹۹۹۹ , +۸۳۵ , ۵۱۲ , ۰

در C به طور پیش فرض اعداد صحیح در مبنای ۱۰ تعریف شدهاند. اما مبناهای ۸ و ۱۶نیز کاربرد زیادی دارند، زیرا ۸ و ۱۶ توانهایی از مبنای ۲ اند و این گونه سیستم های عددنویسی برای کامپیوترها مناسب تر است. برای مثال عدد ۶۵۵۳۶ در یک ماشین ۱۶ بیت همان عدد ۱۰۰۰۰ در مبنای ۱۶ است.
حال ببینیم کامپیوتر چگونه تشخیص میدهد که عددی در مبنای ۸ یا ۱۰ یا ۱۶ تعریف شده؟ برای مشخص ساختن آن از پیشوندهای ۰ برای مبنای ۸ و ۰x برای مبنای ۱۶ استفاده میشود. مبنای ۱۰ هم که پیش فرض است و پیشوند ندارد.بنابراین در مورد اعداد

۰۷۵۱ , ۰۶۶۶ +۰۴۱۶۳ , -۰۳۲۶

صفر سمت چپ به معنای آن است که اعداد مزبور در مبنای ۸ اند، لذا اگر عدد در مبنای ۱۰ باشد، اولین رقم سمت چپ آن نمیتواند صفر باشد. بدیهی است در مبنای ۸ فقط هشت نشانه صفر تا ۷ در ارقام به کار میروند. همچنین در مبنای ۱۶ نیز، شانزده نشانه مختلف به کار میرود که ده نشانه آن همان نشانه های متداول در مبنای ۱۰ یعنی صفر تا ۹ است و شش نشانه در ۱۰ , ۱۱ , ۱۲ , ۱۳ , ۱۴ , ۱۵ معادل ترتیب به که است A , B , C , D , E , F حروف دیگر مبنای ۱۰ اند. مثالهای زیر نمونهای از اعداد مبنای ۱۶ اند.

۰xF1E6 , 0x5AB , 0x327 , 0x99

اگر طول هر کلمه در ماشین مورد نظر ۱۶ بیت باشد، طول آن از ۳۲k- تا ۳۲k+ یعنی از ۱- و یا معادل ۰۷۷۷۷۷ مبنای ۸ و یا ۳۲۷۶۸ ۱۵ ۷FF- تا ۳۲۷۶۷+ تغییر خواهد کرد که معادل مبنای ۱۶ است. ولی اگر طول هر کلمه ۳۲ بیت باشد، طول آن از ۲G- تا ۲G+ خواهد بود یعنی از  ۶۴۸ ، ۴۸۳، ، ۱۴۷، ۲-  تا ۶۴۷، ۴۸۳ ، ۱۴۷ ، ۲ که معادل دو به توان ۳۱ – ۱ است

مقادیر ثابت صحیح بدون علامت یا unsigned integer constants با قرار دادن u،حرف اول کلمه unsigned، و همینطور مقادیر ثابت صحیح طولانی یا long integer constants با قراردادن حرف l، حرف اول کلمه long، در سمت راست آنها مشخص میگردد که l و u را میتوان به هر دو صورت بزرگ یا کوچک نوشت. همچنین اگر عددی هر دو صفت مذکور را داشته باشد (یعنی هم بدون علامت و هم به صورت طولانی باشد)، با دو حرف u) ul در سمت چپ، l در سمت راست آن) متمایز میشود.

مثال ۲ـ۲ جدول زیر مثال هایی از انواع مقادیر ثابت صحیح را نشان میدهد.

مقدار ثابت صحیح سیستم عددی
۵۴۶۷۸۰u مبنا ۱۰ (بدون علامت)
۱۲۳۴۵۶۷l مبنا ۱۰ (طولانی)
۱۲۳۴۵۶۷ul مبنا ۱۰ (بدون علامت و طولانی)
۰۱۲۳۴۵۶u مبنا ۸ (بدون علامت)
۰۱۲۳۴۵۶ul مبنا ۸ (بدون علامت و طولانی)
۰۵۶۳۲۱۴l مبنا ۸ (طولانی)
۰۲۶۷۷u مبنا ۸ (بدون علامت)
۰x12545678l مبنا ۱۶ (طولانی)
۰xABCDEFu مبنا ۱۶ (بدون علامت)
۰xEF1A3Abul مبنا ۱۶ (بدون علامت و طولانی)

توابع scanf و printf در فرمت مربوط به خواندن و نوشتن مقادیر صحیح در مبنای ۸ و ۱۶ به ترتیب حروف o و x را مشخصکننده فرمت در رشته کنترل فرمت به کار میبرند.

مثال ٢ـ٣ برنامه زیر عددی در مبنای ۱۶ (با پیشوند ۰x یا بدون آن) را از طریق ترمینال میخواند و معادل آن را در مبناهای ۱۰ و ۸ چاپ میکند

# include<stdio.h>
main ()
{
int n ;
printf ("Enter a hexadecimal constant: \n") ;
scanf ("%x",&n) ;
printf ("The decimal equivalent of %x is: %d ", n , n) ;
printf ("\n The octal equivalent of %x is: %o\n", n , n) ;
}

 

زبان برنامه نویسی c کاراکتر ها،شناسه ها،متغیرها
زبان C – ساختار برنامه c،دستورالعمل های اجرایی زبان c
دسته بندی داده ها، اعلان متغیر ها در زبان c

مطالب مرتبط


    Notice: WP_Query از نگارش 3.1.0 از رده خارج شده! caller_get_posts تاریخ‌گذشته است. به جای آن از ignore_sticky_posts استفاده کنید. in /home/bndon/domains/bighbigh.ir/public_html/wp-includes/functions.php on line 4080
نظر شما !!!

نظر شما برای “داده های صحیح،مقدار ثابت صحیح در زبان c”

  1. جدیدترین اخبار
  2. پربیننده ترین اخبار
قالب تفریحی