Votre question

et logique en C

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
23 Décembre 2004 18:23:25

Bonjour à tous,
Je suis lycéen et dans le cadre de l'épreuve de travaux partique encadré mes camarades et moi travaillons sur le C. Nous souhaitons programmer un microcontroleur. Pour cela le logiciel utilisé est devpic.
Dans une structure si....alors ;je souhaite tester deux conditions dans le if. exemple:
if (donnee0&&donnee1).

Malheureusement lors de la simulation du programme le logiciel detecte une anomalie et ne veut pas fonctioner. Je suis un peu désemparé et j'espere que vous saurez trouver une solution à mon probleme. Le but est de verifier si deux entrées de mon microcontroleur sont actives afin d'affecter a une variable définie une valeur bien précise.

exemple: en langage algorythmique
si donnée0 et donnée1
alors var=50

Ca parait idiot mais je suis novice en C.
Merci d'avance.
Shakes

Autres pages sur : logique

23 Décembre 2004 18:29:55

  1. #define ETAT_HAUT 1
  2. #define ETAT_BAS 0
  3.  
  4. int donnee0 = 0, donnee1 = 0, var = 0;
  5.  
  6. if( (donnee0 == ETAT_HAUT) && (donnee1 == ETAT_BAS) ) {
  7. var = 50;
  8. }


ça passe pas ?

si non, il dit quoi le compilo ?
23 Décembre 2004 20:44:56

le type booléen n'existe pas en C. mais en C++ oui.
Contenus similaires
23 Décembre 2004 21:45:35

en tout cas, en C, une valeur différente de 0 est considérée comme vraie, sinon fausse, c'est déja un pseudo type booléen quand meme.

donc if (donnee0 && donnee1) est parfaitement légal en C. attention a pas coller les && sinon il croira qu'ils font partie des symboles de la premiere variable.
23 Décembre 2004 21:54:05

Le type booleen existe en C depuis la norme C99.
Il parait qu'un entête <stdbool.h> définit true, false et bool.
Maintenant, reste à savoir si son compilateur supporte correctement la norme!
23 Décembre 2004 23:21:16

Citation :

Lightness1024 a écrit :
en tout cas, en C, une valeur différente de 0 est considérée comme vraie, sinon fausse, c'est déja un pseudo type booléen quand meme.

donc if (donnee0 && donnee1) est parfaitement légal en C. attention a pas coller les && sinon il croira qu'ils font partie des symboles de la premiere variable.


il avais mis if(donnee0&&donnee1), c'était peut être le problème ..
24 Décembre 2004 00:58:12

PINK FLOYD :) 
24 Décembre 2004 04:27:24

pour répondre à ta question, voici des exemples, reproduit les avec tes variables

int a, b, c;

c = a && b ? 1 : 0;

/*
/si a est different de 0 ET b different de 0 ALORS c = 1 sinon c = 0
*/

l'équivalent :
if( a && b )
c = 1;
else
c = 0;

ou encore

if( (a != 0) && (b != 0) )
c = 1;
else
c = 0;
25 Décembre 2004 20:17:27

je n'ai malheureusement pas pu essayer vos diverses subjestions pr l'insant car je ne peut utiliser le compilateur qu'au lycée à cause de la clé d'activation.
Enfin bref, je vous remercie tous pour vos idées.
Je me suis appercus que les variables ont été définis par la commande char.
Il est donc probable que le problème vienne de là.
Fo vraiment que je me documente sur le C d'ailleurs si vous avez des liens interessants je suis preneur.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS