Как использовать логический тип данных в C? - PullRequest
41 голосов
/ 12 ноября 2010

Я просто писал код на C, и оказалось, что у него нет логического / bool типа данных.Есть ли какая-нибудь библиотека C, которую я могу включить, чтобы дать мне возможность возвращать тип данных boolean / bool?

Ответы [ 7 ]

66 голосов
/ 12 ноября 2010

Если у вас есть компилятор, который поддерживает C99, вы можете

#include <stdbool.h>

В противном случае вы можете определить свой собственный, если хотите.В зависимости от того, как вы хотите его использовать (и хотите ли вы иметь возможность компилировать код на C ++), ваша реализация может быть такой простой, как:

#define bool int
#define true 1
#define false 0

По моему мнению, вы можетену просто используйте int и используйте ноль для обозначения false и ненулевое значение для истины.Вот как это обычно делается в C.

17 голосов
/ 12 ноября 2010

C99 имеет логический тип данных, но если вам нужно использовать более старые версии, просто определите тип:

typedef enum {false=0, true=1} bool;
3 голосов
/ 10 августа 2016

C99 имеет тип bool.Чтобы использовать это,

#include <stdbool.h>
1 голос
/ 12 ноября 2010

В качестве альтернативы ответу Джеймса Макнеллиса я всегда стараюсь использовать перечисление для типа bool вместо макросов: typedef enum bool {false=0; true=1;} bool;.Это более безопасно, так как позволяет компилятору выполнять проверку типов и устраняет гонки на расширение макросов

0 голосов
/ 12 июля 2018

Мы можем использовать для этого тип enum. Нам не нужна библиотека. Например

           enum {false,true};

значение для false будет равно 0, а значение для true будет равно 1.

0 голосов
/ 11 июля 2018

C99 представил _Bool как собственный чистый логический тип. Нет #include с необходимо:

int main(void)
{
  _Bool b = 1;
  b = 0;
}

На истинном C99-совместимом (или выше) компиляторе C вышеупомянутый код должен прекрасно компилироваться.

0 голосов
/ 13 ноября 2016
struct Bool {
    int true;
    int false;
}

int main() {

    /* bool is a variable of data type – bool*/
    struct Bool bool;

    /*below I’m accessing struct members through variable –bool*/ 
    bool = {1,0};
    print("Student Name is: %s", bool.true);
    return 0;
}
...