ثابت ها و لیترال ها در زبان C
ثوابت به مقادیر ثابتی اشاره می کنند که در طول اجرای برنامه نمی توان آن ها را تغییر داد، به این مقادیر ثابت لیترال نیز می گویند. ثوابت می توانند از هر نوع داده پایه ای که در زبان برنامه نویسی C وجود دارد (مانند ثابت عددی، ثابت رشته، ثابت کاراکتر و غیره)، باشند. همچنین نوع داده شمارشی (enumeration) نیز می تواند به صورت ثابت باشد. عملکرد ثوابت درست مانند متغیرهای عادی می باشد با این تفاوت که مقدار ثوابت بعد از تعریف شدن قابل تغییر نیستند.
لیترال های عددی (Integer Literals)
لیترال عددی می تواند یک ثابت از نوع دسیمال یا هگزادسیمال باشد. یک پیشوند مبنا را مشخص می کند، مثلا از پیشوند 0x یا 0X در اعداد هگزادسیمال استفاده می شود ولی برای اعداد دسیمال پیشوندی وجود ندارد. همچنین از پسوند های U و L (Unsigned و Long) نیز می توان در لیترال های عددی استفاده کرد. ترتیب و بزرگ یا کوچک بودن حرف مهم نیست.
در اینجا چند مثال از لیترال های عددی را مشاهده می کنید:
1 2 3 4 5 | 212 /* Legal */ 215u /* Legal */ 0xFeeL /* Legal */ 078 /* Illegal: 8 is not an octal digit */ 032UU /* Illegal: cannot repeat a suffix */ |
در مثال زیر انواع مختلفی از لیترال های عددی را مشاهده می کنید:
1 2 3 4 5 6 7 | 85 /* decimal */ 0213 /* octal */ 0x4b /* hexadecimal */ 30 /* int */ 30u /* unsigned int */ 30l /* long */ 30ul /* unsigned long */ |
لیترال های اعشاری (Floating-point Literals)
یک لیترال اعشاری شامل یک بخش عدد صحیح، یک نقطه اعشار، یک بخش کسری و یک بخش توان تشکیل شده است. شما می توانید لیترال های اعشاری را به شکل دسیمال یا نمایی نمایش دهید. زمانی به شکل دسیمال نمایش می دهید، باید از نقطه اعشاری، توان و یا هر دو استفاده کنید. و زمانی که به شکل نمایی نشان می دهید، باید از بخش عدد صحیح، بخش کسری و یا هر دو استفاده کنید.
چند نمونه از لیترال های اعشاری:
1 2 3 4 5 | 3.14159 /* Legal */ 314159E-5L /* Legal */ 510E /* Illegal: incomplete exponent */ 210f /* Illegal: no decimal or exponent */ .e55 /* Illegal: missing integer or fraction */ |
لیترال های کاراکتری (Character Constants)
لیترال های کاراکتری در بین علامت نقل قول تکی (‘) قرار می گیرند. برای نمونه ‘X’ یک لیترال کاراکتری است و می تواند درون یک متغیر از نوع char ذخیره شود. یک لیترال کاراکتری می تواند یک کاراکتر ساده (مانند ‘x’)، یک کاراکتر کنترلی (مانند ‘t’) و یا یک کاراکتر جهانی (مانند ‘u02C0’) باشد. در زبان C تعداد معینی از کاراکتر ها وجود دارند که با یک علامت () مشخص می شوند و به آن ها کاراکتر کنترلی گفته می شود. آن ها هر کدام مفهوم خاصی دارند مثلا n برای ایجاد خط جدید یا t برای ایجاد فصله از نوع tab به کار می رود.
در جدول زیر برخی از کاراکترهای کنترلی در زبان برنامه نویسی C را مشاهده می کنید:
کاراکتر کنترلی | معنی |
character | |
‘ | ‘ character |
“ | ” character |
? | ? character |
a | Alert or bell |
b | Backspace |
f | Form feed |
n | Newline |
r | Carriage return |
t | Horizontal tab |
v | Vertical tab |
ooo | Octal number of one to three digits |
xhh . . . | Hexadecimal number of one or more digits |
مثال زیر نحوه استفاده از کاراکتر های کنترلی در زبان C را نشان می دهد:
1 2 3 4 5 | #include <stdio.h> int main() { printf("HellotWorldnn"); return 0; } |
زمانی که کد بالا توسط کامپایلر زبان C کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 | Hello World |
لیترال های رشته ای (String Literals)
لیترال های رشته ای یا ثوابت بین علامت نقل قول دوتایی (“”) قرار میگرند. یک رشته مانند لیترال های کاراکتری، می تواند حاوی کاراکترهای ساده (مانند ‘x’)، کاراکترهای کنترلی (مانند ‘t’) و یا کاراکترهای جهانی (مانند ‘u02C0’) باشد. شما می توانید یک خط طولانی را با استفاده از لیترال های رشته ای به چند خط کوتاه تقسیم کنید و یا با استفاده از فضای خالی سفید بخش های مختلف را از هم جدا کنید.
در اینجا چند نمونه از لیترال های رشته ای را مشاهده می کنید:
1 2 3 4 | "hello, dear" "hello, dear" "hello, " "d" "ear" |
تعریف یک ثابت در زبان C
در زبان C دو روش ساده برای تعریف ثابت وجود دارد:
- استفاده از پیش پردازنده #define
- استفاده از کلمه کلیدی const
دستور پیش پردازنده #define
در زیر فرم کلی تعریف یک ثابت با استفاده از #define را مشاهده می کنید:
1 | #define identifier value |
مثال زیر فرم بالا را توضیح می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> #define LENGTH 10 #define WIDTH 5 #define NEWLINE 'n' int main() { int area; area = LENGTH * WIDTH; printf("value of area : %d", area); printf("%c", NEWLINE); return 0; } |
نتیجه کامپایل و اجرای کد بالا:
1 | value of area : 50 |
کلمه کلیدی const
در زیر فرم کلی تعریف یک ثابت با استفاده از کلمه کلیدی const را مشاهده می کنید:
1 | const type variable = value; |
مثال زیر فرم بالا را توضیح می دهد:
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> int main() { const int LENGTH = 10; const int WIDTH = 5; const char NEWLINE = 'n'; int area; area = LENGTH * WIDTH; printf("value of area : %d", area); printf("%c", NEWLINE); return 0; } |
نتیجه کامپایل و اجرای کد بالا:
1 | value of area : 50 |
کلمه کلیدی const زیرش متن در زیر فرم کلی تعریف یک باثت با استفاده از کلمه کلیدی const را مشاهده می کنید: ثابت رو درست کن قصد جسارت نداشتم
اصلاح شد. با تشکر از توجه شما دوست عزیز
دنبال ترجمه کتاب برنامه نویسی سی بودم که سایت شما رو پیدا کردم به نظر سیلابس هاش شبیه هم همون کتاب می آید. ولی یک سری سوالات تستی مربوط به اون کتاب هست که نمی دونم که می تونم در سایت شما پیدا کنم سوال و جواب هاش رو یا نه.