- بواسطة x32x01 ||
أولاً: يعني إيه 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; مثال 2:
Code:
int x;
x = 1, 2, 3; تفتكر هيشتغل؟
الجواب: آه هيشتغل تمام
ليه؟
لأن المترجم هيقرا الكود كده:
Code:
int x;
x = 1;
2, 3; مثال 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 |
الخلاصة
- لو كتبت قيم مفصولة بفواصل من غير أقواس → أول قيمة بس هي اللي تتنفذ.
- لو استخدمت أقواس ( ) → آخر قيمة هي اللي تتخزن.
- دايمًا افهم الكود قبل ما تكتبه، عشان ما تقعش في "الخدع الصغيرة" دي

التعديل الأخير: