Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C] Domanda su switch

    io devo usare l'istruzione switch ma in questo modo:
    in base ad un numero faccio determinate cose, ma devo far in modo di fare la stessa cosa con più numeri. es:
    se il numero è 0x80 faccio un'operazione sul "registro" 0.
    se il numero è 0x84 faccio la stessa operazione ma sul "registro" 4.
    avrei pensato concettualmente di fare una cosa del genere

    case '0x8x'

    intendendo per x qualsiasi cosa poi letta all'interno del case per individuare il "registro"
    c'è un modo per fare questo?
    grazie...

  2. #2

    Re: [C] Domanda su switch

    Originariamente inviato da Guitar_joker87
    io devo usare l'istruzione switch ma in questo modo:
    in base ad un numero faccio determinate cose, ma devo far in modo di fare la stessa cosa con più numeri. es:
    se il numero è 0x80 faccio un'operazione sul "registro" 0.
    se il numero è 0x84 faccio la stessa operazione ma sul "registro" 4.
    avrei pensato concettualmente di fare una cosa del genere

    case '0x8x'

    intendendo per x qualsiasi cosa poi letta all'interno del case per individuare il "registro"
    c'è un modo per fare questo?
    grazie...

    ehm non e molto chiaro quello che vuoi fare....Cioe tu in base al valore cha assume x vai a selezionare il registro? io pero di x ne vedo due....

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Devi lavorare con gli operatori bit a bit.
    Costruisci una maschera che accetta tutti i valori compresi fra 0x80 e 0x8F e testa il risultato del AND bit a bit.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: Re: [C] Domanda su switch

    Originariamente inviato da UltraBeginner
    ehm non e molto chiaro quello che vuoi fare....Cioe tu in base al valore cha assume x vai a selezionare il registro? io pero di x ne vedo due....
    Credo che intenda valori numerici... dove 0x indica un valore esadecimale (il secondo x dovrebbe significare tutti i valori compresi fra 0 e F).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    scusa, la prima x vuol dire che è esadecimale... 0x8x l'ultima x... 0x81, 0x82, 0x83, 0x84

  6. #6
    come faccio a fare la maschera? LeleFT puoi essere più esplicativo?

  7. #7
    altrimenti posso mettere || nella condizione del case?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Un esempio, per vedere se un numero è compreso fra 0x80 e 0x8F è il seguente:
    codice:
    switch( tuoValore & 0xE0) {
       case 0x80:   // E' un valore compreso tra 0x80 e 0x8F
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Originariamente inviato da Guitar_joker87
    scusa, la prima x vuol dire che è esadecimale... 0x8x l'ultima x... 0x81, 0x82, 0x83, 0x84
    ah ok giusto fuso io che non me ne ero accorto, in ogni caso fare una maschera vuol dire fare un and bit a bit tra il numero che vuoi esaminare e appunto la maschera. Scrivo un esempio che forse e meglio

    allora prendiamo come maschera 0xFF (che in binario vale 1111 1111)

    il numero che vogliamo mascherare facciamo che sia 0x81 (in binario vale 1000 0001

    Risultato della mashera

    0xFFFF & 0x81 =

    1111 1111 &
    1000 0001 =
    ----------
    1000 0001

    ah ecco Lele mi ha anticipato lol

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Guitar_joker87
    altrimenti posso mettere || nella condizione del case?
    Non nel modo che intendi tu.

    Se osservi l'esempio che ti ho postato prima, io metto nello switch() un'espressione: tale espressione è un valore numerico, risultato dell'operazione di AND logico fra due numeri.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.