7

Какой тип данных правильно использовать как логический в C?

Nicolas Chabanovsky
  • 51,426
  • 87
  • 267
  • 507

1 Answers1

7

Если используется C99, то стоит задействовать его возможности, подключив заголовок stdbool.h. Например, так:

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

#define BOOL(b) b ? "true" : "false"

void main() { bool t = true, f = false;

printf("t = %s, f = %s\n", BOOL(t), BOOL(f));

}

Если C99 не используется, то предопределенного логического типа нет. Обычно используют макроопределения

#define TRUE  1
#define FALSE 0

или перечисления

typedef enum { FALSE = 0, TRUE = 1 } bool;

при этом используемым типом данных может быть любой подходящий целочисленный тип.

stanislav
  • 34,518
  • 27
  • 98
  • 214
  • 2
    Собственно, если подключать stdbool.h, то все вопросы решаются. В C89 этот заголовок определяет макросы, а в C99 там встроенный тип _Bool тайпдефится как bool – saigono Jan 04 '11 at 22:16
  • Оставить как есть int и не мудрить. И не сравнивать на равенство. – Qwertiy Feb 15 '17 at 13:11