Cordiali saluti ai membri del forum.
Premetto che sono un utilizzatore di schede Arduino in modo molto amatoriale, ma mi piace molto capire come altri molto più esperti di me riescano a sviluppare sketch anche molto elaborati e da cui prendere spunto per futuri progetti personali. Scaricando un progetto direttamente da "Arduino Project Hub" mi sono imbattuto in questa riga di comando di cui non sono riuscito a decodificarne il significato operativo su quello che è poi lo svolgimento logico del codice.
La riga in questione è:
player = (player == 0) ? 1 : 0;
ringrazio fin d'ora che mi darà delle delucidazioni in merito.
Stiamo aspettando la presentazione come ti è stato chiesto qui.
"Display LCD 44780 non segue l'ordine consecutivo delle righe"
Buongiorno, @mig75
Benvenuto nella sezione Italiana del forum ![]()
Cortesemente, leggi attentamente il REGOLAMENTO di detta sezione:
[REGOLAMENTO] Come usare questa sezione del forum
(... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15)
e poi, come da suddetto regolamento (punto 16.7), fai la tua presentazione RISPONDENDO NELL'APPOSITA DISCUSSIONE:
Presentazioni nuovi iscritti: fatevi conoscere da tutti! (Part 2)
spiegando bene quali esperienze hai in elettronica e in programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie
Gianluca
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento, nessuno ti risponderà (eventuali risposte, o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. ![]()
P.P.S.: Evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere ...
Quella riga significa: se player è 0, allora player=1; se è 1, allora player=0.
Operatore ternario:
Molto più semplicemente, se player è bool:
player = !player
Ci sarebbe molto da dire su bool, int, true, false, ...
Funzionerebbe anche se non fosse bool
Sì, se player non può assumere valori diversi da 0 e 1.
Anche
Ricordati delle regole di promozione automatica
Qualunque cosa diversa da zero binario è true
Include puntatori non null, numeri qualsiasi dimensione non a zero, stringhe non di lunghezza zero, e quant'altro
Ah... In questo caso è uguale, perché qui il ternario fa il controllo sullo 0: qualunque valore diverso da 0 diventa 1. Se avesse fatto il controllo su 1 sarebbe stato diverso, perché con ! qualunque valore diverso da zero diventa zero, non solo 1.
Imfatti, come scritto al #5, funziona
Come diceva il mio docente di C:
La particolarità del linguaggio è la sua semplicità di base
È quasi banale, (io direi addirittura naif)
È molto spiazzante se non si ragiona in maniera pulita
Poi si vedono orrori come quello di questa domanda
E io mi interrogo sempre su quale sia la "contorsione mentale" che genera righe simili
Grazie della esauriente risposta, e si, come pensavo io con la mia poca esperienza, bastava semplicemente utilizzare l'operatore !
grazie ancora.
Io l'operatore ternario lo uso molto spesso, però concordo al 100%...
Qui si tratta di roba da "ufficio complicazioni affari semplici".
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.