در زبان 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 را میتوان به هر دو صورت بزرگ یا کوچک نوشت. همچنین اگر عددی هر دو صفت مذکور را داشته باشد (یعنی هم بدون علامت و هم بهصورت طولانی باشد)، با دو حرف ul (u در سمت چپ، l در سمت راست آن) متمایز میشود.
مثال ۲ـ۲ جدول زیر مثالهایی از انواع مقادیر ثابت صحیح را نشان میدهد.
توابع scanf و printf در فرمت مربوط به خواندن و نوشتن مقادیر صحیح در مبنای ۸ و ۱۶ به ترتیب حروف o و x را مشخصکننده فرمت در رشته کنترل فرمت به کار میبرند