Булевы значения в C: руковод для начинающих

Здравствуйте, будущие программисты! Сегодня мы окунемся в увлекательный мир булевых значений в C. Не волнуйтесь, если вы никогда не писали код раньше - я буду вашим доброжелательным проводником в этом путешествии. К концу этого руководства вы将成为 мастером булевых значений!

C - Booleans

Что такое булевы значения?

Прежде чем мы перейдем к специфике C, давайте поговорим о том, что такое булевы значения. Представьте, что вы играете в простую игру "Правда или Ложь" с другом. Это по сути то, что такое булевы значения в программировании - они представляют собой два возможных состояния: да или нет, включено или выключено.

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

Теперь давайте посмотрим, как мы можем использовать это понятие в программировании на C.

Использование enum для реализации булевого типа в C

В C нет встроенного булевого типа (по крайней мере, в старых версиях), но мы можем создать свой собственный, используя что-то называемое enum. Enum - это как список констант, которые мы определяем.

Вот как мы можем создать булевый тип с помощью enum:

enum boolean {
false,
true
};

Теперь давайте используем это в простом节目中:

#include <stdio.h>

enum boolean {
false,
true
};

int main() {
enum boolean isRaining = false;

if (isRaining == true) {
printf("Don't forget your umbrella!\n");
} else {
printf("Enjoy the sunny day!\n");
}

return 0;
}

В этом примере мы создали переменную isRaining типа enum boolean. Мы установили ее в false, поэтому когда мы запустим этот програм, он выведет "Enjoy the sunny day!".

Использование typedef enum как BOOL

Теперь, каждый раз писать enum boolean может быть немного утомительно. Мы можем упростить свою жизнь, используя typedef для создания сокращения:

#include <stdio.h>

typedef enum {
FALSE,
TRUE
} BOOL;

int main() {
BOOL isSunny = TRUE;

if (isSunny) {
printf("Don't forget your sunscreen!\n");
} else {
printf("Maybe bring a jacket.\n");
}

return 0;
}

Здесь мы создали новый тип叫做 BOOL, который можно использовать так же, как и любой другой тип. Это гораздо чище и легче для чтения!

Булевы значения с помощью #define

Другой способ реализации булевых значений в C - использование директив #define. Этот метод часто используется в старом коде C:

#include <stdio.h>

#define FALSE 0
#define TRUE 1

int main() {
int isHungry = TRUE;

if (isHungry) {
printf("Time for a snack!\n");
} else {
printf("I'm not hungry right now.\n");
}

return 0;
}

В этом случае TRUE определен как 1, а FALSE как 0. Помните, что в C любое ненулевое значение считается истинным в условном операторе.

Булевый тип в stdbool.h

Хорошая новость! Если вы используете более новую версию C (C99 или новее), то есть встроенный булевый тип. Просто включите заголовочный файл stdbool.h:

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

int main() {
bool isHappy = true;

if (isHappy) {
printf("I'm happy and I know it!\n");
} else {
printf("I'm feeling a bit down today.\n");
}

return 0;
}

Это самый прямой способ использования булевых значений в современном программировании на C. Он чистый, простой и universally understood.

Сравнение методов булевых значений

Давайте подытожим различные методы, которые мы изучили, в удобной таблице:

Метод Плюсы Минусы
enum Пользовательски определенный, ясное намерение Многословный
typedef enum Пользовательски определенный, менее многословный Может быть unfamiliar к кому-то
#define Простой, compatibile с widely Не типобезопасный
stdbool.h Встроенный, типобезопасный Доступен только в C99 и новее

Заключение

И вот мы arrived, друзья! Мы исследовали мир булевых значений в C, от создания своих собственных с помощью enum до использования встроенного типа в stdbool.h. Помните, что булевы значения - это основы принятия решений в программировании. Они как светофоры в коде - они говорят вашему програме, когда продолжать и когда останавливаться.

Пока вы продолжаете свое путешествие в программировании, вы найдете булевы значения повсюду. Они используются в условиях, циклах и даже в качестве флагов для отслеживания состояний в вашем програме.

Before I let you go, here's a little programming joke: Why do programmers prefer dark mode? Because light attracts bugs! (Get it? Boolean... light... bugs? Okay, I'll stop now.)

Keep practicing, stay curious, and happy coding!

Credits: Image by storyset