بررسی Literal و Constant در زبان C

ویدیو مربوط به این مقاله: (کلیک کن)

Literal یعنی یه مقدار ثابت که مستقیم توی کد نوشته شده. یعنی مقداری که خودش همون چیزیه که هست. نه متغیره، نه تابعیه، نه چیزی که از جای دیگه بیاد. مثال:

int i = 10;
i = 15;
printf("%d - %c - %d", i, 'A', 10);

طبق کد بالا، 'A' یک literal هست! عدد 10 یک literal هست. چون اینا مستقیم و بدون متغیر نوشته شدن.
به خط اول کد دقت کن، اونجا مقدار 10 یک literal هست چون داره مستقیما به i نسبت داده میشه.

Constant یعنی یه متغیر که مقدارش دیگه تغییر نمیکنه. یعنی یه چیزی که فقط یه بار مقدار می‌گیره و بعدش دیگه قفل میشه. مثال:

const int maxUsers = 100;

یه عدد داریم به اسم maxUsers که همیشه 100 میمونه. هیچ‌کس حق نداره تغییرش بده.


define# چیه؟ یه دستور پیش‌پردازندست که میگه هر جا این اسم رو دیدی، جاش این مقدار رو بذار. مثال:

#define PI 3.14159

هر جا تو کد نوشتی PI، کامپایلر قبل از اجرا، اون رو با 3.14159 جایگزین میکنه.


مقایسه define# با const:
define#:
زمان پردازش: قبل از کامپایل
محدوده: از لحظه تعریف تا آخر فایل
اشکال‌زدایی: اسمش در دیباگر دیده نمیشه
حافظه: مقدارش مستقیما جایگزین میشه

const:
زمان پردازش: هنگام کامپایل
محدوده: مثل متغیرهای عادی (block scope)
اشکال‌زدایی: در دیباگر قابل مشاهدست
حافظه: در حافظه ذخیره میشه