2 عبدالله عبدالرحمن11 نشر 2 يوليو 2021 أرسل تقرير نشر 2 يوليو 2021 ليس هناك فرق بين نوع عمل الدالتين فهما الاثنتين يقومان بالطباعة على موجه الأوامر CMD. وايضاً هناك اختلاف في الإستخدام فعلى سبيل المثال طريقة إدراج متغير تختلف في الدالتين ففي دالة cout تكون كالآتي #include <iostream> using namespace std; int main () { // تعريف متغير int i = 4; // إدراج المتغير لطباعته cout << "The number is " << i; return 0; } اما في دالة printf #include <stdio.h> int main() { // تعريف المتغير int num = 4; // إدراج المتغير لطباعته printf("Hello world %d", num); return 0; } والإختلاف المهم هو أن دالة cout يتم إستخدامها في ++C ويتم إستيرادها من مكتبة iostream اما دالة printf فيتم إستخدامها في C ويتم إستيرادها من مكتبة stdio.h ويُفضل إستخدام iostream بدلاً من cstdio لأن iostream أكثر أمانًا من ناحية النوع : مع <iostream> نوع الكائن الذي يتم إدخاله / إخراجه معروف بشكل ثابت بواسطة المترجم. في المقابل ، <cstdio>يستخدم الحقول "٪" لاكتشاف الأنواع ديناميكيًا. أقل عرضة للخطأ: مع <iostream>، لا توجد رموز "٪" زائدة يجب أن تكون متسقة مع الكائنات الفعلية التي يتم إدخالها / إخراجها قابل للتوسيع:تسمح آلية <iostream> بأنواع جديدة معرّفة من قبل المستخدم لتكون قابلة للإدخال / إخراج دون كسر الكود الحالي. تخيل الفوضى إذا قام الجميع في نفس الوقت بإضافة حقول "٪" جديدة غير متوافقة إلى printf() و scanf()؟! قابل للوراثة:آلية <iostream> مبنية من فئات حقيقية مثل std::ostream و std::istream. على عكس <cstdio> . 1 اقتباس
1 Ali Haidar Ahmad نشر 2 يوليو 2021 أرسل تقرير نشر 2 يوليو 2021 (معدل) لاتوجد فروقات مهمة ، لكن هناك فرق في طريقة الاستخدام ، انظر للمثال : #include<bits/stdc++.h> using namespace std; int main() { int x=1; cout<<"The x value is:"<<" "<<x<<endl; printf("The x value is: %d",x); return 0; } // الخرج سوف يكون The x value is: 1 The x value is: 1 نلاحظ لا يوجد أي فرق بين الطريقتين من حيث قيمة الخرج,لكن الفرق هو بطريقة طباعة كل من cout و printf لكن ماذا تعني %d في printf؟ يجيب ان تخبر ال printf بنمط المتحول الذي بداخله وهذه الرموز تعبر عن نمط المتحولات %d=int %c=char %s=string %f=float ومن الضروري وضعه، بدونه لن يطبع قيمة المتحول. مثلا اذا كان الكود كالتالي: #include<bits/stdc++.h> using namespace std; int main() { float x=1.1; printf("The x value is:",x); return 0; } سيكون الخرج The x value is نلاحظ عدم طباعة اي قيمة والتصحيح هو: #include<bits/stdc++.h> using namespace std; int main() { float x=1.1; printf("The x value is: %f",x); return 0; } تم التعديل في 2 يوليو 2021 بواسطة Ali Haidar Ahmad 2 اقتباس
1 Ziena Darffat نشر 2 يوليو 2021 الكاتب أرسل تقرير نشر 2 يوليو 2021 يعني ممكن نستغنى عن prinf لأن cout أكثر راحة للاستخدام؟ 1 اقتباس
1 Ali Haidar Ahmad نشر 2 يوليو 2021 أرسل تقرير نشر 2 يوليو 2021 بتاريخ 2 دقائق مضت قال Ziena Darffat: يعني ممكن نستغنى عن prinf لأن cout أكثر راحة للاستخدام؟ نعم يمكنك 2 اقتباس
1 Wael Aljamal نشر 2 يوليو 2021 أرسل تقرير نشر 2 يوليو 2021 كلاهما يُستخدم لطباعة المخرجات من البرنامج، ولكن التابع printf أسرع بكثير، وهذا تلحظه فقط في مجال البرمجة التنافسية competitive programming حيث يوجد حدود زمنية صغيرة لكل مسألة و في حال استخدمت cin//cout ربما لن يحقق برنامجك الحدود الزمنية، لذلك يميل الحكام في المسابقات لضبط الزمن الخاص بحل مسألة برمجية باستخدم scanf//printf لأنها أسرع و يفترض من المتسابقين استخدامها فرق السرعة فعليا أن كلا من cin - cout تحتاج لمعرفة نوع المتغير قبل قراءته و قبل طباعته مايأخذ بعض الوقت، في حين أن scanf//printf يتم تمرير نمط المتغير لهما. والفرق بطريقة الكتابة هي أن cin - cout تستخدم المعاملات << >> بين المتغيرات، أما scanf//printf تأخذ سلسلة نصية كمعامل أول تحدده في format أو شكل عام للمخرجات و تعمل به، و المتغيرات يتم تمريرهم كلً على حدى ونفصل بينهم بفاصلة مثل ألأمثلة في باقٍ الإجابات على سؤالك. بشكل عام يمكنك الإعتماد على cin - cout في برامجك لامشكلة. 1 اقتباس
السؤال
Ziena Darffat
الفرق بين cout و printf في c++
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.