طباعة منطقي غير محدد باستخدام Cout (C ++)
-
23-09-2019 - |
سؤال
لدي فصل مع bool
عضو البيانات الذي لم يتم تهيئته بواسطة المنشئ. إذا فعلت
cout << x.myBoolDataMember;
أين x
هو كائن من هذه الفئة حيث bool
لم يتم تهيئتها ، أحيانًا أحصل على رقم عشوائي بدلاً من 0 أو 1. (أنا أستخدم gcc
.) هل هذا السلوك متوافق مع Standard
?
المحلول
هل هذا السلوك متوافق مع المعيار؟
نعم! باستخدام قيم القمامة (غير مهتم) في الكود الخاص بك يستدعي سلوك غير محدد
نصائح أخرى
نعم. يمكن أن يكون للمتغير غير الملحوم أي قيمة.
بمجرد أن لا يتحقق مشغل "<<" ، يكون هذا السلوك صحيحًا.
تم إخفاء المشكلة هنا في المنحة نفسها: يستخدم البرنامج أكثر من بت واحد لتخزين المنحة. هذا يعتمد على التنفيذ. في بعض الأحيان يمكن استخدام بت واحد فقط لتخزين المنحة.
في بعض الأحيان أكثر ، وهي مثل هذه الحالة.
لا تنتمي إلى StackOverflow