تعریف true و false در زبان سی

در زبان سی می‌توانید با include کردن هدرفایل stdbool.h از دادهٔ bool استفاده کنید. اما می‌خواهیم به صورت دستی آن را بنویسیم. به کد زیر دقت کنید:

#include <stdio.h>

#define true -1
#define false 0

int main()
{
    int a = true;

    if(a)
        printf("%d\n", a);

    return 0;
}

هدف از آوردن این مثال ساده توجه به 1- است. چرا از 1 بجای 1- استفاده نکردیم؟ برای اجرای شرط هیچ تفاوتی ندارد که ما 1- قرار دهیم یا 1؛ فقط باید یک عدد غیر صفر باشد تا شرط اجرا شود. اگر ما در تعریف true از 1 استفاده کنیم فقط بیت سمت راست برابر 1 می‌شود و مابقی بیت‌ها برابر 0 است. اما وقتی مقدار true را برابر 1- قرار می‌دهیم تمام بیت‌ها برابر 1 می‌شود. علت آن استفادهٔ کامپیوترهای امروزی از سیستم مکمل دو (Two’s Complement) است. می‌توانید توضیحاتی در مورد آن در این لینک بخوانید.

فایل ضمیمهٔ زیر در درک بهتر این مطلب به شما کمک می‌کند.

MD5 checksum:
07dbe4cdc6082570fc793255be93cb89 *print_true_TRUE_Bits.zip