ثابتهای عدد صحیح در آردوینو ، اعدادی هستند که بهطور مستقیم در اسکچ (کد) استفاده میشوند؛ مثل 123. بهصورت پیشفرض با این اعداد بهعنوان اعداد صحیح (int) رفتار خواهد شد؛ اما میتوانید این رفتار را با استفاده از (مدیفایر، تغییردهندهی نوع) توصیفکنندههای U و L تغییر دهید. (پایین را مشاهده کنید.)
همان طور که گفته شد بهطور معمول با ثابتهای عدد صحیح بهعنوان عدد صحیح دسیمال (مبنای 10) برخورد خواهد شد؛ اما برای ورود اعداد در مبناهای دیگر، میتوان از نمادهایی خاص (قالبها) استفاده نمود.
1 2 3 4 5 6 7 8 9 10 | Base Example Formatter Comment 10 (decimal) 123 none 2 (binary) B1111011 leading 'B' only works with 8 bit values (0 to 255) characters 0-1 valid 8 (octal) 0173 leading "0" characters 0-7 valid 16 (hexadecimal) 0x7B leading "0x" characters 0-9, A-F, a-f valid |
دسیمال همان مبنای 10 است. این همان مبنایی است که ما آن را میشناسیم و محاسبات خود را با آن انجام میدهیم. ثابتهای بدون پیشوند، بهعنوان دسیمال فرض خواهند شد.
مثال:
1 2 | 101 // same as 101 decimal ((1 * 10^2) + (0 * 10^1) + 1) //معادل عدد صد و یک دسیمال |
باینری، مبنای 2 است و در این فرمت، فقط کاراکترهای 0 و 1 معتبر هستند.
مثال:
1 2 | B101 // same as 5 decimal ((1 * 2^2) + (0 * 2^1) + 1) //معادل عدد پنج دسیمال |
قالب باینری (دودویی) فقط روی بایتهای (8بیت) بین 0 (B0) و 255 (B11111111) کار میکند.
اگر ورود integer (عدد صحیح) (16 بیت) در قالب باینری راحت است، میتوانید این کار را با روشی دو مرحلهای مانند زیر انجام دهید:
1 | myInt = (B11001100 * 256) + B10101010; // B11001100بایت بالاست |
اکتال، مبنای 8 است. در قالب هشت هشتی، فقط کاراکترهای 0 تا 7 معتبر هستند. مقادیر اکتال با پیشوند “0” مشخص میشوند.
مثال:
1 2 | 0101 // same as 65 decimal ((1 * 8^2) + (0 * 8^1) + 1) //معادل عدد شصت و پنج دسیمال |
هشدار:
با قرار دادن عدد صفر در ابتدای یک عدد ثابت بهصورت سهوی، ممکن است یک باگ ایجاد کنید که یافتن آن نیز سخت است. این امر باعث میشود که کامپایلر نیز ثابت را سهواً بهصورت اکتال تفسیر کند.
هگزادسیمال (هگز)، مبنای شانزده است. در این مبنا، کاراکترهای 0 تا 9 و A تا F معتبر هستند که A مقدار 10 را دارد، B مقدار 11 است، به همین منوال تا F که 15 است. مقادیر هگزا با پیشوند “0x” مشخص میشوند. توجه کنید که A-F میتوانند هم به حروف بزرگ و هم کوچک نوشته شوند. (a-f)
مثال:
1 2 | 0x101 // same as 257 decimal ((1 * 16^2) + (0 * 16^1) + 1) //معادل عدد دویست و پنجاه و هفت دسیمال |
توصیفکنندههای U و L (تغغیردهندههای نوع)
بهطور پیشفرض، با یک ثابت عدد صحیح بهعنوان int (با 16 بیت) رفتار خواهد شد که محدودیتهایی در مقدار را به همراه خود دارد. برای مشخص کردن یک ثابت عدد صحیح با نوع دادهای دیگر، مقادیر زیر را در ادامهی آن بیاورید:
-u یا U تا ثابت را به فرمت دادهی بدون علامت (unsigned data) تبدیل کند. مثال: 33u
-l یا L تا ثابت را به فرمت دادهی طولانی یا کشیده (long) تبدیل کند. مثال: 100000L
-ul یا UL تا ثابت را به فرمت طولانی بدون علامت (unsigned long) تبدیل کند. مثال: 32767ul