#include using namespace std; int main() { int a = b = c = 0; cout << a << '*' << b << '*' << c; return 0; }
Output: Compile time error!توضيح: A chained statement cannot be used to initialize variables at the time of declaration. Hence the statement a = b = c = 0; is an illegal statement. However following way a legal syntax and can be used in C++ or C.
int abc; a = b = c = 0;
السؤال 2 CPP
#include using namespace std; int main() { for ( ; ; ) cout << 'blank'; return 0; }
Output: Infinite Loop!توضيح: نظرًا لأن شرط اختبار التهيئة وشرط الزيادة/النقصان مفقودان داخل حلقة for، فسيتم تنفيذ التنفيذ في حلقة لا نهائية.
السؤال 3 CPP
#include using namespace std; int main() { int i; for (i=0; i<3; i++); cout << 'hello!' <<i; return 0; }
Output: hello!3توضيح: Hello!3 هي النتيجة لأنه عند تنفيذ حلقة for، لا يكون هناك أي مهمة للقيام بها بسبب وجود الفاصلة المنقوطة (;) في السطر الذي تم تعريف حلقة for فيه. سيتم تنفيذ الحلقة ثلاث مرات وستصبح قيمة i 3 ثم سيتم تنفيذ بقية العبارة (العبارات).
السؤال 4 CPP
#include using namespace std; int main() { int i; i = 1 + (14563); cout << i; return 0; }
Output: 4توضيح: عامل الفاصلة () هو عامل ثنائي يقوم بتقييم المعامل الأول ويتجاهل النتيجة ثم يقوم بتقييم المعامل الثاني ثم يقوم بإرجاع قيمة المعامل الثاني. هنا يكون ارتباط عامل الفاصلة () من اليسار إلى اليمين ومن السهل أن نفهم أن التعبير (14563) يتم تقييمه على أنه 3 ثم يتم تعيين النتيجة 1 + 3 إلى i.
السؤال 5 CPP
#include using namespace std; int main() { int a = 0 b; b = (a = 50) + 10; cout << a << '$' << b; return 0; }
Output: 50توضيح: العبارة ب = (أ = 50) + 10؛ يستخدم مفهوم المهمة المضمنة. هنا يتم تعيين قيمة 50 للمتغير a والنتيجة 50+10 يتم تعيينها للمتغير b. السؤال 6 CPP
#include using namespace std; int main() { char a = 30 b = 40 c = 10; char d = (a*b)/c; cout << int(d); return 0; }
Output: 120توضيح: يمكن لـ C++ أيضًا إجراء عمليات حسابية مع الأخذ في الاعتبار قيم ASCII للأحرف إذا تم تنفيذ العملية الحسابية على متغيرات نوع بيانات char. هنا في هذه الحالة الإجابة هي 120 وهي قيمة ASCII لـ x.
السؤال 7 CPP
#include using namespace std; int main(int x) { static int i = 5; if (--i) { cout << i; main(10); } return 0; }
Output: 4321توضيح: يتم التعامل مع أي رقم غير الصفر في لغة C++ على أنه قيمة حقيقية. هنا في هذا الكود، تميل عبارة if إلى تقليل قيمة i ولكن داخل كتلة if يتم استدعاء الدالة main() مرارًا وتكرارًا. هنا يبدو البرنامج وكأنه في حلقة لا نهائية ولكن المتغير i ثابت بطبيعته وله عمر حتى التنفيذ وبالتالي سيتوقف البرنامج إذا أصبح i 0.
السؤال 8 CPP
#include using namespace std; int main(int x) { int i = 5; if (--i) { cout << i; main(10); } return 0; }
Output: infinite loopتوضيح: يتم التعامل مع أي رقم غير الصفر في لغة C++ على أنه قيمة حقيقية. هنا في هذا الكود تميل عبارة if إلى تقليل قيمة i ولكن داخل الكتلة إذا تم استدعاء الدالة main() مرارًا وتكرارًا (سيتم تنفيذ جميع العبارات الآن كما لو كان برنامجًا جديدًا) وبالتالي سيتم تنفيذ البرنامج في حلقة لا نهائية حيث لا يوجد شرط إنهاء. إنشاء اختبار