سؤال

لدي فصل مع bool عضو البيانات الذي لم يتم تهيئته بواسطة المنشئ. إذا فعلت

cout << x.myBoolDataMember;

أين x هو كائن من هذه الفئة حيث bool لم يتم تهيئتها ، أحيانًا أحصل على رقم عشوائي بدلاً من 0 أو 1. (أنا أستخدم gcc.) هل هذا السلوك متوافق مع Standard?

هل كانت مفيدة؟

المحلول

هل هذا السلوك متوافق مع المعيار؟

نعم! باستخدام قيم القمامة (غير مهتم) في الكود الخاص بك يستدعي سلوك غير محدد

نصائح أخرى

نعم. يمكن أن يكون للمتغير غير الملحوم أي قيمة.

بمجرد أن لا يتحقق مشغل "<<" ، يكون هذا السلوك صحيحًا.
تم إخفاء المشكلة هنا في المنحة نفسها: يستخدم البرنامج أكثر من بت واحد لتخزين المنحة. هذا يعتمد على التنفيذ. في بعض الأحيان يمكن استخدام بت واحد فقط لتخزين المنحة.
في بعض الأحيان أكثر ، وهي مثل هذه الحالة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top