الشبكة العربية لمطوري الألعاب

محترف مشرف عبد اللطيف حاجي علي مشاركة 1

السلام عليكم

بينما كنت أتصفح Code لأحد المبرمجين، صادفت العبارة التالية:
i++,j++,k++,l++;

علماً أن i,j,k,l متغيرات أعلن عنها سابقاً... و أريد الاستفسار عن فرق هذه الـ Statement عن التالي:
i++;j++;k++;l++;

فهل يملك أحد الإجابة؟

عبد اللطيف حاجي علي
مبرمج
In|Framez

خبير  Mohammad Khashashneh مشاركة 2

I`m sorry, I tried to know the difference but I couldn`t. It seems that they are both right. I put a function call after the comma and it works fine too. Maybe the only difference is that you should end the whole statement with a semicolon !

I tried both GCC and VS6 and it compiles with no problems. if you have any other compiler please try it and tell us if it genertes an error;

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع

خبير مدير وسام البهنسي مشاركة 3

لا فرق! كلاهما صحيح.
لكن للفاصلة العادية نقطة إضافية كما في هذا المثال:
int i=5,j=10,k=3;

هذه العبارة لا يمكن التعبير عنها بالفاصلة المنقوطة، إذ يجب أن تضيف النوع int أمام كل متغير جديد كأنك تكتب سطراً جديداً...
هممم... طبعاً هذه الفاصلة أيضاً يمكن استغلالها لتنفيذ عدة مهام في جزء التكرار بحلقة for...
for (int i=0;i<50;i++,me++)
{
}

---
وسام البهنسي

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

  The Shadow Master مشاركة 4

السلام عليكم و رحمة الله و بركاته

أظن أن الفرق الوحيد هة عند المقارنة مع عدد آخر
و هذا في الحلقات مثل for

مثال 1:
main()
{
  int i;
  for (i=0;i<10;i++)
      cout<<"Hello ";
}

في هذه الحالة سيكون الخرج هو كلمة Hello عشرة مرات

مثال 2
main()
{
  int i;
  for (i=0;i<10;++i)
      cout<<"Hello ";
}

أما في هذه الحالة سيكون الخرج هو كلمة Hello تسعة مرات

و ذلك لأن في المثال الثاني استخدمنا العبارة ++i

و التي تدل على المفسر Compiler يقوم بالزيادة أولاً ثم المقارنة مع العدد عشرة

أما في المثال الأول I++
يقوم المفسر Compiler بالمقارنة أولاً ثم الزيادة


ولكم الشكر

The Shadow Master
Do you need a help?

خبير مدير وسام البهنسي مشاركة 5

كلامك سليم، لكننا نتكلم عن الفرق بين الفاصلة , والفاصلة المنقوطة ;
:)

وسام البهنسي
مبرمج في إنفيديا وإنفريمز