ثوابت مقادیر ثابتی هستند که برنامه امکان ایجاد تغییر در آنها را ندارد و به آنها لیترال نیز میگویند.
ثابتها میتوانند از هر نوع داده پایهای باشند و به مقادیر اعداد صحیح، اعداد ممیز شناور، کارکترها، رشتهها و مقادیر بولی تقسیم میشوند.
ثابتها همانند متغیرهای معمولی هستند تنها با این تفاوت که مقدار آنها بعد از تعریفشان قابل تغییر نیست.
لیترالهای صحیح (Integer Literal)
یک لیترال صحیح میتواند یک عدد ثابت دهدهی، اکتال و یا هگزادسیمال باشد. مبنا یا پایه عدد با یک پیشوند مشخص میشود: 0x یا 0X برای هگزادسیمال، 0 برای اکتال و برای دهدهی نیز پیشوندی به کار نمیرود.
همچنین ممکن است یک لیترال صحیح شامل یک پسوند باشد که میتواند ترکیبی از U و L، به ترتیب علامت unsigned و long باشد. پسوند را میتوان به صورت حرف بزرگ یا کوچک و به هر ترتیبی نوشت.
مثالهایی از لیترالهای صحیح در زیر آمده است:
212 // Legal 215u // Legal 0xFeeL // Legal 078 // Illegal: 8 is not an octal digit 032UU // Illegal: cannot repeat a suffix
مثالهای زیر انواع مختلف لیترالهای صحیح را لیست کرده است.
85 // decimal 0213 // octal 0x4b // hexadecimal 30 // int 30u // unsigned int 30l // long 30ul // unsigned long
لیترالهای ممیز شناور (Floating-point Literal)
لیترالهای ممیزشناور یک بخش صحیح،یک نقطه اعشار، یک بخش کسری و یک بخش نمایی دارد. میتوان لیترالهای ممیز شناور را به فرم اعشاری یا فرم نمایی بیان کرد.
هنگام نمایش به فرم اعشاری، باید نقطه اعشار، بخش نمایی و یا هردو را لحاظ کرد و هنگام نمایش به فرم نمایی، باید بخش صحیح، بخش کسری و یا هردو را لحاظ کرد. بخش نمایی با e یا E نمایش داده میشود.
مثالهایی از لیترالهای صحیح در زیر آمده است:
3.14159 // Legal 314159E-5L // Legal 510E // Illegal: incomplete exponent 210f // Illegal: no decimal or exponent .e55 // Illegal: missing integer or fraction
لیترالهای بولی
دو لیترال بولی در ++C وجود داشته که بخشی از کلیدواژههای استاندارد ++C هستند.
- مقدار true نشان دهنده مقدار صحیح است.
- مقدار false بیان کننده مقدار غلط است.
نباید مقدار true را برابر با 1 و مقدار false را برابر با 0 درنظر بگیرید.
لیترالهای کارکتری
لیترالهای کارکتری درون تک کوتیشن قرار میگیرند. اگر لیترال با L آغاز شود (فقط حرف بزرگ)، آنگاه لیترال از نوع کارکتر پهن بوده (مثال ’L’x) و باید در متغیر نوع «wchar_t» ذخیره شود در غیر این صورت، لیترال از نوع کارکتر باریک بوده (مثال ‘x’) و باید در متغیر نوع «char» ذخیره گردد.
لیترال کارکتری میتواند شامل کارکتر ساده (مثال ‘x’)، دنباله escape (مثال ‘\t’) یا کارکترهای یونیورسال (مثل ‘u02c0\’) باشد.
کارکترهای مشخصی در ++C وجود دارد که با قراردادن آنها بعد از بک اسلش (\)، معنای خاصی پیدا کرده و برای بیان کارکترهای خاصی مانند کارکتر خط جدید (n\) یا کارکتر تب (t\) بکار گرفته میشوند. لیستی از این دنبالههای escape را در زیر مشاهده میکنید.
دنباله escape |
معنی |
\\ |
کارکتر \ |
‘\ |
کارکتر ‘ |
“\ |
کارکتر “ |
?\ |
کارکتر ? |
a\ |
هشدار یا بیپ |
b\ |
Backspace |
f\ |
Form feed |
n\ |
خط جدید |
r\ |
Carriage return |
t\ |
تب افقی |
v\ |
تب عمودی |
ooo\ |
عدد اکتال یک تا سه رقم |
. . .xhh\ |
عدد هگزادسیمال یک رقم یا بیشتر |
مثال زیر برخی از دنبالههای کارکتری escape را نشان میدهد.
#include <iostream> using namespace std; int main() { cout << "Hello\tWorld\n\n"; return 0; }
با اجرا و کامپایل کد فوق، خروجی زیر تولید میشود
Hello World
لیترال رشته ای
لیترالهای رشته ای درون دابل کوتیشن (“”) محصور میشوند. لیترال رشتهای شامل کارکترهایی مشابه لیترال کارکتری میباشد: کارکترهای ساده، دنبالههای escape، و کارکترهای یونیورسال.
میتوان یک خط بلند را با استفاده از لیترالهای رشته ای به چند خط شکسته و با استفاده از فضای خالی از هم جدا کرد.
مثالهایی از لیترالهای رشته ای در زیر آورده شده است. هر سه حالت رشته بیان کننده رشته یکسانی میباشند.
"hello, dear" "hello, \ dear" "hello, " "d" "ear"
تعریف ثابتها
دو روش ساده برای تعریف ثابتها در ++C وجود دارد:
- استفاده از پیش پردازنده define#
- استفاده از کلیدواژه const
پیش پردازنده define#
خط زیر نحوه استفاده از پیش پردازنده define# برای تعریف یک ثابت را نشان میدهد.
#define identifier value
مثال زیر جزئیات آن را توضیح میدهد.
#include <iostream> using namespace std; #define LENGTH 10 #define WIDTH 5 #define NEWLINE '\n' int main() { int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }
با اجرا و کامپایل کد زیر، خروجی زیر تولید میشود.
50
کلیدواژه const
به شکل زیر، میتوان از پیشوند const برای اعلان ثابتها با نوع مشخص استفاده کرد.
const type variable = value;
مثال زیر جزئیات آن را توضیح خواهد داد.
#include <iostream> using namespace std; int main() { const int LENGTH = 10; const int WIDTH = 5; const char NEWLINE = '\n'; int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }
هنگامیکه کد فوق کامپایل و اجرا میشود، خروجی زیر تولید خواهد شد.
50
به عنوان برنامهنویس خوب، بهتر است که ثوابت را با حروف بزرگ تعریف کنیم.
منبع: ترجمه از سایت tutorialspoint.com
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.