Ответ 1
Существует _Bool
в C99 и bool
, если вы включили stdbool.h
.
Если у вас его нет (довольно современный компилятор), используйте int
, это обычно самый быстрый тип. Экономия памяти при использовании char
, вероятно, незначительна.
Я обнаружил, что нет родного типа bool
. Люди либо используют int
, либо char
- хотя кажется, что int
может использоваться чаще, чем char
? Это правда?
Мой первый импульс заключался в использовании char
, поскольку это меньший тип данных, но что-то я пропустил? Является int
лучше для булевых значений, и если да - почему?
Существует _Bool
в C99 и bool
, если вы включили stdbool.h
.
Если у вас его нет (довольно современный компилятор), используйте int
, это обычно самый быстрый тип. Экономия памяти при использовании char
, вероятно, незначительна.
Если вы используете достаточно современный компилятор C, вам просто нужно:
#include <stdbool.h>
У этого обычно есть макрос, например:
#define bool _Bool
который позволяет использовать C99 встроенный _Bool
тип, где вам нужен bool
.
Существует собственный тип с именем _Bool
(начиная с C99). В <stdbool.h>
существует также #define
, чтобы обеспечить bool
как псевдоним, если вы хотите его (также имеет #define
для true
и false
).
На самом деле нет никакой реальной разницы, так как char всегда получает повышение до int при его использовании (отметьте this). Я никогда не видел, чтобы char использовался как bool, поэтому я пошел бы на использование int.
В соответствии с ISO-9899 результат отношения, логические и равенства операторы имеют тип int
. true
и false
из stdbool.h
также являются целыми числами. Если вы хотите освободить память - используйте бит-поля.