الفرق بين definition و declaration و initialization

x32x01
  • بواسطة x32x01 ||
🤓 الموضوع ده دايمًا بيخلي الناس تلخبط بين التلات كلمات، خصوصًا في لغة C، وعلشان كده هنتكلم عنها ببساطة ومع مثال ظريف فيه خدعة صغيرة (trick) هتخليك تفهمها كويس جدًا 😎

أولاً: يعني إيه Declaration و Definition و Initialization؟​


  • Declaration (تصريح)
    يعني بتقول للمترجم إن فيه متغير اسمه كذا، ونوعه كذا، من غير ما تديه قيمة.
    int x;
  • Definition (تعريف)
    بتعلن عن المتغير وكمان بتحجزله مكان في الذاكرة. أوقات بيكونوا نفس الحاجة.
  • Initialization (تهيئة)
    هنا بقى بتحجز مكان في الذاكرة وتديه قيمة أولية.
    int x = 10;



تعالى ناخد Trick جميلة بالـ comma operator 😏

في الطبيعي لما تعمل assign لقيمة في متغير، بتكون قيمة واحدة بس، زي كده: int x = 5;
بس تعالى نجرب حاجة غريبة شوية 😈

مثال 1:​

int x = 1, 2, 3;

هنا الناس كتير هتقول “Syntax Error”
وطبعًا معاهم حق ✅

ليه؟ لأن المترجم هيشوف الكود كده:
Code:
int x = 1;
int 2, 3;
فالسطر التاني مش منطقي وبالتالي هيديك Syntax Error 💥



مثال 2:​

Code:
int x;
x = 1, 2, 3;

تفتكر هيشتغل؟
الجواب: آه هيشتغل تمام 😎

ليه؟
لأن المترجم هيقرا الكود كده:
Code:
int x;
x = 1;
2, 3;
يعني هيـ assign القيمة الأولى بس، والباقي بيتعمله ignore 👋



مثال 3:​

Code:
int x;
x = (1, 2, 3);
هنا بقى المفاجأة 😮
المترجم هينفذ كل القيم بالترتيب، بس النتيجة النهائية اللي هتتخزن في x هي آخر قيمة فقط 👇

يعني x = 3;
وده بسبب إن الأقواس بتخلي العملية تتنفذ بالكامل، لكن النتيجة النهائية بتكون آخر قيمة في الـ comma operator.



خلاصة الموضوع 🧠

المصطلحالمعنىمثال
Declarationتصريح عن وجود متغيرint x;
Definitionتعريف المتغير وحجز مكانه في الذاكرةint x;
Initializationتعريف المتغير وتعيين قيمة أولية لهint x = 5;
Comma Operator Trickبياخد آخر قيمة داخل الأقواسx = (1,2,3); // x = 3

الخلاصة 🎯

  • لو كتبت قيم مفصولة بفواصل من غير أقواس → أول قيمة بس هي اللي تتنفذ.
  • لو استخدمت أقواس ( ) → آخر قيمة هي اللي تتخزن.
  • دايمًا افهم الكود قبل ما تكتبه، عشان ما تقعش في "الخدع الصغيرة" دي 👀
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
153
x32x01
x32x01
x32x01
الردود
0
المشاهدات
633
x32x01
x32x01
x32x01
الردود
1
المشاهدات
486
x32x01
x32x01
x32x01
الردود
0
المشاهدات
510
x32x01
x32x01
x32x01
الردود
0
المشاهدات
657
x32x01
x32x01
x32x01
الردود
0
المشاهدات
555
x32x01
x32x01
x32x01
الردود
0
المشاهدات
725
x32x01
x32x01
x32x01
الردود
0
المشاهدات
431
x32x01
x32x01
x32x01
الردود
0
المشاهدات
432
x32x01
x32x01
x32x01
الردود
0
المشاهدات
45
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,831
المشاركات
2,028
أعضاء أكتب كود
463
أخر عضو
adil
عودة
أعلى