Pages: [1]   Go Down
Author Topic: Molteplici condizioni e comparazioni in un unica funzione  (Read 151 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 75
Posts: 4603
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
If (valore > 10 || luce == '1' && spegni =='0')  
« Last Edit: October 08, 2013, 09:15:56 am by nid69ita » Logged

my name is IGOR, not AIGOR

Offline Offline
Full Member
***
Karma: 0
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie tante

un saluto
Remo
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 109
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per una maggiore velocità del codice però conviene suddividere l'IF.
Con questo
Code:
If (valore > 10 || luce == '1' && spegni =='0') 
vengono controllate 3 condizioni
Invece in questo modo
Code:
If (spegni =='0')
   If (valore > 10 || luce == '1')
   { ... }
viene controllato il primo valore, se non corrisponde salta tutto, se corrisponde esegue il secondo controllo.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Pages: [1]   Go Up
Jump to: