[RESOLU] structure conditionnelle ? :

Salut peut on ecrire :

tableau_Etat_Relais[i] == true ? un truc : 3 trucs

si oui comment svp ?

ou est on obligé de passé par un if else par exemple .

Tout dépend de ce que tu appelles truc.

const char *valeur = tableau_Etat_Relais == true ? "un truc" : "3 trucs";
Par exemple.

Salut Henry ,

par trucs , j ' entends 3 fonctions distinctes , style comme ça :

tableau_Etat_Relais[i] == true ? gestionnaireDeTache.registerAsyncCommand( i, TIMER_V, resetTimer ) :
 gestionnaireDeTache.unregisterAsyncCommand(calculPinInverse( i ));
 delay(10); // inclure un timer afin d' eviter les courts circuits sur les moteurs electriques au passage de la montee a la descente et inversement
 reInitRelaisTable(i , i);

il me semble que non , c ' etait juste pour garder une forme lineaire dans le code , mais je vais mettre a la place :

if (tableau_Etat_Relais[i]) gestionnaireDeTache.registerAsyncCommand( i, TIMER_V, resetTimer ); // Volets , utilise 2 relais , donc pas d ' inversion dans le code elle se fait en changeant de relais et la fonction calculPinInverse + reInitRelaisTable .
			else {
				gestionnaireDeTache.unregisterAsyncCommand(calculPinInverse( i ));
				delay(10); // inclure un timer afin d' eviter les courts circuits sur les moteurs electriques au passage de la montee a la descente et inversement
				reInitRelaisTable(i , i);

Oui, cela peut très bien un appel de fonction.

hbachetti:
Tout dépend de ce que tu appelles truc.

const char *valeur = tableau_Etat_Relais == true ? "un truc" : "1truc ; 1truc 1truc";
Par exemple.
[/quote]
ca serait plus ca :
* *const char *valeur = tableau_Etat_Relais[i] == true ? "un truc" : "1truc ; 1truc ; 1truc;" ;* *
je sais pas si faut des " ;" mais c' est pour bien faire voir .
il me semble qu on ne peut mettre qu ' une seule intruction genre ? 1truc : 1truc ;
mais qu ' on ne peut pas mettre ( ce que je voulais )
* *? 1truc : 1truc 1trucDifferent 1trucDePlus;* *

Je ne vois pas trop ce que tu veux faire.

"1truc ; 1truc ; 1truc;" est une chaîne de caractères, rien de plus.
Qu'elle comporte des points-virgule importe peu.

ce que je voulais vraiment faire c ' est ca :

if (tableau_Etat_Relais[i]) gestionnaireDeTache.registerAsyncCommand( i, TIMER_V, resetTimer );
 else {
 gestionnaireDeTache.unregisterAsyncCommand(calculPinInverse( i ));
 delay(10);
 reInitRelaisTable(i , i);

est ce que je peut ( je ne crois pas , mais bon , je ne suis pas vraiment expert en la matiere :stuck_out_tongue: )

l ' ecrire comme cela :

tableau_Etat_Relais[i] == true ? gestionnaireDeTache.registerAsyncCommand( i, TIMER_V, resetTimer ) :
 gestionnaireDeTache.unregisterAsyncCommand(calculPinInverse( i ));
 delay(10); 
 reInitRelaisTable(i , i);

enfin un truc avec la structure : " ? : "

Forcément que non.

delay(10);
reInitRelaisTable(i , i);

Seront exécutées quelle que soit la condition.

il me semblait bien que ca pouvait pas le faire :art:

merci , c ' est vrai que dit comme ca , ca parait evident :wink: