PDA

Visualizza la versione completa : [C] Operatori condizionali


phog
24-10-2014, 01:38
Buonasera.
Sto cercando di imparare il linguaggio C e ho riscontrato difficoltà con un esercizio che sono riuscito a risolvere ma, in maniera meno “elegante” della soluzione proposta, la quale, però, se la implemento nel mio codice non si riesce a compilarla.




/*Scrivere un codice che richieda in ingresso tre valori interi distinti e ne determini
il maggiore facendo uso dell'espressione condizionale "?:" */
#include<stdio.h>

main()
{
int a, b, c, x; //dichiarazione delle variabili
printf("immettere 3 valori:");
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);

/*il mio testo di riferimento consiglia come soluzione: */
printf("\n il maggiore e': %d\n", (x=(a>b)?a:b)?c:x:c);
}


Scritto in questo modo non riesco a compilarlo. Ho provato a modificarla ma con scarsi risultati e purtroppo non sono riuscito a trovare esempi simili nelle guide cartacee di cui dispongo. Se qualcuno mi spiegasse dove risiede l’errore gliene sarei infinitamente.

Saluti.

Scara95
24-10-2014, 03:38
(x=(a>b)?a:b)?c:x:c dovrebbe essere
(x=(a>b)?a:b)>c?x:c
Metodo alquanto contorto ad ogni modo. L'operatore ?: Dovrebbe essere usato solo per casi estremamente semplici.

Ad ogni modo un espressione (a?b:c) risulta b se a e vera, c altrimenti.
Quel codice non fa altro che concatenarne due, tra l'altro facendo un'assegnazione in quella interna da sfruttare in quella esterna. Non scrivere mai codice simile, ne va della salute mentale delle persone. Ci sono modi ben più intuitivi di scriverlo. E sebbene il caso non sia complesso è sempre meglio prendere la via semplice e intuitiva.

phog
24-10-2014, 22:17
Illuminante spiegazione tecnica!!!
Grazie Scara95.

Scara95
24-10-2014, 22:41
Di nulla :ciauz:

Loading