في لغة C، تُستخدم القيم المنطقية لتمثيل "صحيح" أو "خاطئ". على الرغم من أن لغة C الأصلية لا تحتوي على نوع بيانات منطقي مدمج، إلا أن هناك طريقتين رئيسيتين للتعامل مع القيم المنطقية:
1. استخدام الأعداد الصحيحة:
قبل معيار C99، كانت الطريقة الشائعة لتمثيل القيم المنطقية في لغة C هي استخدام الأعداد الصحيحة. يُعتبر الصفر (0) خطأً، وأي قيمة أخرى غير صفرية تُعتبر صحيحة. على سبيل المثال:
int is_valid = 1; // trueint is_empty = 0; // false
if (is_valid) { // سيتم تنفيذ هذا الكود}
if (!is_empty) { // ! تعني "ليس" // سيتم تنفيذ هذا الكود أيضًا}هذه الطريقة لا تزال مدعومة، ولكنها قد تكون أقل وضوحًا من استخدام النوع bool المخصص.
2. استخدام النوع bool (معيار C99 والإصدارات الأحدث):
قدم معيار C99 النوع bool في ملف الرأس <stdbool.h>. هذا النوع يمكن أن يأخذ قيمتين فقط: true و false. لاستخدام هذا النوع، يجب تضمين ملف الرأس في بداية البرنامج:
#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 الحديثة.
مثال شامل:
#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، حيث يُحسن من وضوح الكود ويقلل من احتمالية حدوث الأخطاء.