Pages: [1]   Go Down
Author Topic: Molteplici condizioni e comparazioni in un unica funzione  (Read 207 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 135
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: 87
Posts: 5057
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: 135
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie tante

un saluto
Remo
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 335
Posts: 23123
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: 115
Posts: 7257
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: