اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

لا فرق من الناحية الظاهرية كما تحدثت حيث أن كلاهما يقوم بطباعة سطر جديد.

و لكن الفرق في طريقة العمل، لفهم ذلك علينا في البداية فهم كيفية الطباعة في ال c++.

في البداية يتم تخزين ما ينبغي طباعته في مخزن مؤقت buffer و من ثم القيام بنقل البيانات إلى الجهاز المطلوب (الشاشة أو ملف على القرص الخ..) و خلال ذلك يتم القيام بعملية flush لل buffer لإفراغه.

ال endl تقوم بذلك في كل مرة أي أن كل استدعاء لعملية ال endl سيقوم بنقل البيانات و القيام ب flush.

بينما n\ تقوم فقط بالتخزين بال buffer بدون أي نقل و فقط عند نهاية البرنامج (أو عند القيام ب flush بشكل يدوي) فإن البيانات تنقل و تتم عملية flush لل buffer.

و بالتالي ستكون n\ أسرع بكثير من endl و لا ينصح باستعمال endl لتلك الأسباب.

  • 0
نشر

هذا صحيح فكل كلامك لا يوجد فيه اي نقيد، الا ان n\ ليس سريعة على  endL , فاذا اردنا طباعة ألف سطر فسيقوم n\ بطباعته في ان واحد وهذا بطبع سيخلق مشاكل في طباعة ، وليس من المنطقي طباعة الف سطر في ثانية واحدة .

وبالتالي مخترع هذه الغة ليس غبي لكي يخترع مصطلحين لكتابة سطر جديد ، ولهذا يوجد قاعدة في هذه الحالة تسمى التوازن:

والطريقة هي نستعمل n\ ثلاثين سطرا ونستعمل مرة واحدة endl وهكذا حتى ننتهي .

وبهذا ستكون الطبعة مضبوطة مئة بالمئة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...