هل يمكن أن تصبح القيمة المنطقية دائمًا صفرًا أو واحدًا عند تحويلها إلى عدد صحيح؟
عند تحويل قيمة منطقية إلى عدد صحيح، يبدو أن العديد من المترجمين تحتفظ فقط بـ 0 أو 1، مما يثير تساؤلات حول موثوقية هذا السلوك. لنتفحص مثالاً:
int a = 2; bool b = a; int c = 3 b; // What is the result? 4 or 5?
الإجابة: نعم، يتم ضمان أن يكون bool 0 أو 1 عند تحويله إلى عدد صحيح.
في C :
ينص معيار C (§4.5/4) بشكل صريح على ما يلي: "يمكن تحويل قيمة r من النوع bool إلى قيمة r من النوع int، حيث تصبح القيمة false صفرًا وصحيح أن تصبح واحدًا."
في C:
عندما يتم تحويل القيمة إلى _Bool، تصبح 0 أو 1 (§6.3.1.2/1): " عند تحويل أي قيمة عددية إلى _Bool، تكون النتيجة 0 إذا كانت القيمة تساوي 0، وإلا فإن النتيجة هي 1 هو واضح ومباشر لأن int يمكن أن يحمل 0 و 1، لذلك لا يوجد تغيير في القيمة (§6.3.1.3).
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3