في لغة C، تُستخدم القيم المنطقية لتمثيل "صحيح" أو "خاطئ". على الرغم من أن لغة C الأصلية لا تحتوي على نوع بيانات منطقي مدمج، إلا أن هناك طريقتين رئيسيتين للتعامل مع القيم المنطقية:

1. استخدام الأعداد الصحيحة:

قبل معيار C99، كانت الطريقة الشائعة لتمثيل القيم المنطقية في لغة C هي استخدام الأعداد الصحيحة. يُعتبر الصفر (0) خطأً، وأي قيمة أخرى غير صفرية تُعتبر صحيحة. على سبيل المثال:

C
int is_valid = 1; // true
int is_empty = 0; // false

if (is_valid) {
// سيتم تنفيذ هذا الكود
}

if (!is_empty) { // ! تعني "ليس"
// سيتم تنفيذ هذا الكود أيضًا
}

هذه الطريقة لا تزال مدعومة، ولكنها قد تكون أقل وضوحًا من استخدام النوع bool المخصص.

2. استخدام النوع bool (معيار C99 والإصدارات الأحدث):

قدم معيار C99 النوع bool في ملف الرأس <stdbool.h>. هذا النوع يمكن أن يأخذ قيمتين فقط: true و false. لاستخدام هذا النوع، يجب تضمين ملف الرأس في بداية البرنامج:

C
#include <stdbool.h>

bool is_ready = true;
bool has_error = false;

if (is_ready) {
printf("الجهاز جاهز.\n");
}

if (!has_error) {
printf("لا توجد أخطاء.\n");
}

في هذا المثال، true و false هما ثابتان معرفان مسبقًا في <stdbool.h>. داخليًا، true يتم تمثيله بالعدد الصحيح 1، و false يتم تمثيله بالعدد الصحيح 0.

مزايا استخدام النوع bool:

  • زيادة وضوح الكود: استخدام true و false يجعل الكود أكثر قابلية للقراءة والفهم، حيث يُعبّر بشكل أوضح عن الغرض من المتغيرات المنطقية.
  • منع الأخطاء: يساعد استخدام bool على منع الأخطاء المحتملة الناتجة عن استخدام قيم عددية غير واضحة كقيم منطقية.
  • توافق مع المعايير: استخدام bool يتماشى مع معايير لغة C الحديثة.

مثال شامل:

C
#include <stdio.h>
#include <stdbool.h>

int main() {
int age = 25;
bool is_adult = (age >= 18);

if (is_adult) {
printf("الشخص بالغ.\n");
} else {
printf("الشخص ليس بالغًا.\n");
}

return 0;
}

في هذا المثال، يتم استخدام النوع bool لتحديد ما إذا كان عمر الشخص أكبر من أو يساوي 18 عامًا.

باختصار، يُفضل استخدام النوع bool من <stdbool.h> عند التعامل مع القيم المنطقية في لغة C، حيث يُحسن من وضوح الكود ويقلل من احتمالية حدوث الأخطاء.