PDA

Visualizza la versione completa : [C] Uso di operatori di confronto in costrutti diversi da if()


feded
11-11-2017, 12:07
Salve a tutti,
conosco bene l'utilizzo degli operatori " <, >, >=, && ,||,&,~ , *,&,ecc..." nel C e li ho utilizzati quasi unicamente in espressioni condizionali (esempio: if ( a >= b && b!= *c ) ), oggi ne ho trovato un uso che mi ha lasciato perplesso.
Il return di una funzione che andava a cambiare il valore di alcune variabili questo :

return a + *d < 2*c + b;

Non ho mai visto utilizzare l'operatore " < " in un'espressione non condizionale,qual il significato?

oregon
11-11-2017, 12:28
Veramente quella una espressione condizionale

a + *d < 2*c + b

che, come tutte le espressioni, ha un risultato. Che il risultato sia valutato da una if o restituito da una return (o assegnato ad una variabile), poco importa.

feded
11-11-2017, 12:45
Grazie Oregon,quindi il risultato sarebbe a + b + il risultato di *d < 2*c ( che sarebbe 1 o 0 ) .
Non che si fa a + *d o 2*c in base al risultato di *d < 2*c, *d<2*c vale o 0 o 1 giusto ?

oregon
11-11-2017, 12:53
Calcola la parte a sinistra del < e poi la parte a destra e confronta. Se il primo valore < del secondo allora il risultato 1 altrimenti 0

Puoi fare semplici prove

feded
11-11-2017, 13:25
Si Oregon grazie tutto chiaro.
Il problema che non avevo mai visto usare gli operatori in quel modo.
Conosco bene gli operatori, anche quelli bit a bit tipo and, xor,shift ecc... e ne so calcolare il valore ( seguo un corso di Assembly al momento) solo che pensavo fosse una cosa pi articolata, sai magari tipo come si fa con ? e : che verifica e poi associa un valore se true o un altro se false, non mi aspettavo un 1 o 0.

Loading