Buonasera a tutti, perdonate la mia inesperienza, ho un problema con l'uso dell'operatore switch-case, non riesco a comprendere dove sbaglio inserendo i paragoni per i "case" e il compilatore mi restituisce il seguente errore:
error: expected primary-expression before ‘<’ token,
error: expected primary-expression before ‘>=’ token
la mia intenzione è indirizzare il flusso in in 3 vie a seconda che la divisione dia un numero maggiore o minore di 1
ho usato la seguente sintassi ma evidentemente non ho capito per niente il modo d'uso:
Puoi gestire tutte le situazioni di UGUAGLIANZA che vuoi, con tutti i valori ben definiti che vuoi (credo che funzioni addirittura con gli oggetti, se questi definiscono operator==()operator int()), ma appunto solo di uguaglianza. Non puoi fare test < <= > >= ecc, all'interno di uno switch. Per quello devi usare una catena di if...else if oppure, se i valori sono pochi, usare più case uno dietro l'altro: tipo
switch (x) {
case 1:
case 2:
case 3:
// Qui sai che x è > 0 && < 4
break;
}
Dal Kernighan & Ritchie, The C Programming Language ... ovvero, la Bibbia del 'C':
3.4 Switch
The switch statement is a multi-way decision that tests whether an expression matches one of a number of constant integer values, and branches accordingly.
switch (expression) {
case const-expr: statements
case const-expr: statements
default: statements
}
Each case is labeled by one or more integer-valued constants or constant expressions. If a case matches the expression value, execution starts at that case. All case expressions must be different. The case labeled default is executed if none of the other cases are satisfied. A default is optional; if it isn't there and if none of the cases match, no action at all takes place. Cases and the default clause can occur in any order.
Comunque in ogni oggetto è possibile definire un operatore di conversione ad int che renderebbe ciò possibile. Ho corretto il post precedente alla luce di ciò, ma direi che una discussione approfondita di questo è OT :).
Grazie mille ragazzi, siete stati chiarissimi, in effetti nei tutorial che avevo cercato nessuno aveva descritto bene come si usa ,ora è piu chiaro anche per me e provero' stasera a modificare il tutto.