Booleen en c

Fermé
dercf345 - 2 juil. 2014 à 23:28
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 - 3 juil. 2014 à 13:50
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!
A voir également:
  • Booléen en c
  • Afficher un booléen en c - Meilleures réponses
  • Déclaration booléen en c - Meilleures réponses
  • Booleen c++ - Forum C++

4 réponses

sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
2 juil. 2014 à 23:54
Bonsoir
pourquoi faire compliquer si on peut faire simple
typedef enum { false, true } bool;


à bientôt
1
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 3/07/2014 à 08:14
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 vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
3 juil. 2014 à 09:40
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
Ok,merci beaucoup!!
0
Sinon tu prends le fait que depuis longtemps en C 0=false le reste=true
0
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
Modifié par sambia39 le 3/07/2014 à 09:42
-_-!
0
[Dal] Messages postés 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 090
3 juil. 2014 à 11:56
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 vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
Modifié par sambia39 le 3/07/2014 à 12:46
@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 6193 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 4 juillet 2024 1 090
3 juil. 2014 à 13:29
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 vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
3 juil. 2014 à 13:50
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 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 2/07/2014 à 23:39
'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