Go Down

Topic: Molteplici condizioni e comparazioni in un unica funzione (Read 223 times) previous topic - next topic

remino

Salve a tutti,

cè un dubbio che vorrei togliermi, purtroppo non ho l'Arduino con me e non posso testarlo.
E nemmeno un compiler in C.

È possibile immettere piu tipi differenti di valori e controlli in una condizione ?

Ecco un esempio

If (valore > 10 || luce == "1" && spegni =="0") 
{ ecc…}


Secondo me dovrebbe funzionare…


Saluti
Remo

nid69ita

#1
Oct 08, 2013, 03:35 pm Last Edit: Oct 08, 2013, 04:15 pm by nid69ita Reason: 1
Certo. Funziona.
E' richiesto solo che nei singoli test (nel tuo esempio 3) i due elementi del confronto siano dello stesso tipo.
Nell'esempio però un errore c'e'. "0" e "1"  messi così sono stringhe (vettori di char) di 1 solo elemento.
Devi invece scrivere usando apice singolo (che indica un singolo carattere costante):
Code: [Select]
If (valore > 10 || luce == '1' && spegni =='0')  
my name is IGOR, not AIGOR


leo72

Attento solo a come sono concatenati tra loro i vari test.

Il tuo if è:
se valore > 10 OPPURE luce == '1' E spegni == '0'

Messo così si potrebbe intendere come
se (valore > 10 OPPURE luce == '1') E spegni == '0'

ma anche come

se valore > 10 OPPURE (luce == '1' E spegni == '0')

Cerca quindi di non far decidere al compilatore in base alla priorità degli operandi ma metti tu le parentesi dove vuoi separare le varie condizioni.

PaoloP

Per una maggiore velocità del codice però conviene suddividere l'IF.
Con questo
Code: [Select]
If (valore > 10 || luce == '1' && spegni =='0') 
vengono controllate 3 condizioni
Invece in questo modo
Code: [Select]
If (spegni =='0')
   If (valore > 10 || luce == '1')
   { ... }

viene controllato il primo valore, se non corrisponde salta tutto, se corrisponde esegue il secondo controllo.

Go Up