في لغة 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، حيث يُحسن من وضوح الكود ويقلل من احتمالية حدوث الأخطاء.