84 lines
2.1 KiB
Markdown
84 lines
2.1 KiB
Markdown
---
|
|
title: "Utiliser des variables de type Booléen - C"
|
|
date: 2015-05-15
|
|
url: utiliser-des-variables-de-type-booleens-c
|
|
layout: post
|
|
category: Programming
|
|
---
|
|
|
|
[![A missing blog post image](/img/blog/utiliser-des-variables-de-type-booleens-c.png)](/img/blog/utiliser-des-variables-de-type-booleens-c.png)
|
|
|
|
Vous savez tous qu'une des nouveautés que le _C++_ a apporté est bien la gestion du type `bool`. Une variable pouvant donc être à `1` ou à `0`, traduisant l'état d'un objet comme un interrupteur par exemple, mais qui sert surtout à rendre le code plus lisible, même si la plupart d'entre vous pensent qu'il est inutile...
|
|
|
|
Mais la question est, pouvons-nous utiliser ce type en _C_ maintenant ?
|
|
Oui et non, du moins, pas si facilement.
|
|
|
|
Se présentent à vous plusieurs méthodes, à vous de choisir celle que vous préférez !
|
|
|
|
---
|
|
|
|
### Rédéfinition du type de façon manuelle
|
|
|
|
Qu'est-ce qu'un `bool` ? Une simple variable contenant `0` ou `1`, alors quel est le type pouvant remplir cette tâche le plus facilement possible ?
|
|
Le `int`. Et maintenant en prenant le moins de place possible en mémoire ?
|
|
Le `char` !
|
|
|
|
Donc voici une implémentation possible :
|
|
|
|
{% highlight c %}
|
|
#define true 1
|
|
#define false 0
|
|
|
|
typedef char bool;
|
|
|
|
/* */
|
|
|
|
bool var = true;
|
|
{% endhighlight %}
|
|
|
|
---
|
|
|
|
### Utilisation du mot clef _\_Bool_
|
|
|
|
Depuis le _C99_, il existe en fait un type booléen, mais il n'est pas sous la forme `bool`. Voici son utilisation :
|
|
|
|
{% highlight c %}
|
|
#define true 1
|
|
#define false 0
|
|
|
|
/* */
|
|
|
|
_Bool var = true;
|
|
{% endhighlight %}
|
|
|
|
---
|
|
|
|
### Maniaque ? Pas pratique ? Utilisons _bool_
|
|
|
|
Petite technique consistant juste à définir _bool_ comme _Bool_ :
|
|
|
|
{% highlight c %}
|
|
#define true 1
|
|
#define false 0
|
|
|
|
typedef _Bool bool;
|
|
|
|
/* */
|
|
|
|
bool var = true;
|
|
{% endhighlight %}
|
|
|
|
---
|
|
|
|
### Utilisation de _stdbool.h_
|
|
|
|
Une librairie supplémentaire a été apportée avec la norme _C99_, comportant 4 macros. Avec elles, vous pouvez directement utiliser le type `bool`. Cette technique est à utiliser si votre projet est compilé en _C99_ ou supérieur. Pour _C89_, voir ci-dessus :wink:
|
|
|
|
{% highlight c %}
|
|
#include <stdbool.h>
|
|
|
|
/* */
|
|
|
|
bool var = true;
|
|
{% endhighlight %}
|