Booleen en c

dercf345 -  
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,
je veux ecrire un programme qui recherche une valeur saisie dans un tableau de valeurs.J'utilise une variable de type booleen pour cela.
Mais comment la déclarer en C?
Merci d'avance!

4 réponses

sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
Bonsoir
pourquoi faire compliquer si on peut faire simple
typedef enum { false, true } bool;


à bientôt
1
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
Arf, j'y pense jamais aux
enum
s! De toute façon ta technique n'est pas (toujours) économe: les enums ne sont pas typés en C et C++ (sauf dans le C++11 et plus), donc le choix de la taille du type est laissé au compilateur et pas au programmeur (donc un mauvais choix peut être fait; ah la magie de l'implentation defined).
0
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
Bonjour
Vue sur cet angle tu peux avoir raison mais une condition de type
bool
se résume par deux valeurs soit elle est fausse soit elle est vraie de plus en langage C, les identificateurs de l'énumération (ici false, true) sont considérés automatiquement comme étant des constantes de type int, ce qui donne des valeurs 0 et 1 etc .
#include <stdio.h>

typedef enum { false,true} bool;

int main(void) {
	bool var = true;
	if( var ){
		printf("Valeur de Var 	= %d \n", var);
		var = false;
	}
	printf("Nouvelle valeur var = %d \n", var);
	
	/***
	*	Teste de valeur Constante 
	* 	False & True
	***/
	printf("Valeur int 		= %d\n", sizeof(int) );
	printf("valeur true 		= %d\n", sizeof(true) );
	printf("valeur false 		= %d\n", sizeof(false) );
	
	return ( 0 );
}


Si on désire donner des valeurs particulières aux constantes, cela est également possible. mais bon tu à peut-être tes raisons donc si tu peux m'éclairer ou un expert peut nous éclairer je suis preneur
à bientôt
0
dercf345
 
Ok,merci beaucoup!!
0
DDD
 
Sinon tu prends le fait que depuis longtemps en C 0=false le reste=true
0
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
-_-!
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Je suis assez d'accord avec DDD, pour ne pas de compliquer la vie inutilement, il suffit de savoir que 0 en C signifie faux et que toute autre valeur (pas nécessairement 1) signifie vrai.

Pas besoin de créer un type particulier, ni de faire du C99.


Dal
0
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
@Dal Oui je suis d'accord, mais il voulait savoir enfin si je comprends bien comment peut il déclarer le type
bool


@drcf345 J'utilise une variable de type booleen pour cela.
Mais comment la déclarer en C ?


C'est pour ça que je lui ai pendu un
typedef enum { false,true} bool; 
quant à l'exemple c'était pour @gravgun sur les constante de l'énumération.

Cependant avoir un type est bien plus lisible et structuré (-_-)! Ceci dit le C99 est excessif juste pour faire un teste.
à bientôt
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
oui, mais ce que dercf345 ne sait peut-être pas, en posant sa question, c'est qu'il n'est pas utile en C de déclarer une variable de type booléen pour conserver une valeur signifiant vrai ou faux.

et que, dès lors, l'informer que 0 signifie faux et toute autre valeur entière signifie vrai, peut être aussi utile.

quant à la lisibilité, un code comme celui est plus concis et tout aussi lisible :
#include <stdio.h>

int main(void)
{
	int vrai;

	vrai = (2 == 1 + 1);

	if (vrai)
		printf("L'expression 2 == 1 + 1 est vraie.\n");

	return 0;
}



Dal
0
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
oui, ou ça grrrr :)
#include <stdio.h>

int main(void) {
	
	auto var = 1;
	
	if( var )
		printf("Vrais\n");
	else 
	 	printf("faux\n");
	 	
	 printf("Vrais %d\n",var+= (var+1) );
	 	
	return ( 0 );
}

lol
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
'lut, 2 solutions:
- soit tu utilises du C99 et inclus alors
#include <stdbool.h>

- soit ce code:
typedef unsigned char bool;
#define true 1
#define false 0
L'utilisation est la même après:
bool truc = true;
bool machin = false;
bool bidule = (7*2 == 14); // true
if (bidule) {
    printf("Houra\n"); //s'affiche
}
from human import idiocy
del idiocy
-1