Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    int e cast di un char ad int

    Ho una array di int dichiarato con dimensione 400, una funzione fa la write di questo array e funziona senza problemi.
    Ora ho un'altra funzione che mi modifica questo array:
    codice:
    void mod(int *array)
    {   
        char i = '3';
        array[1] = (int)'2';     // STAMPA 2
        array[20] = 1;          // NN FUNZIONA
        array[21] = (int)i+1;  // STAMPA 4
    Ora considerando che la write accetta solo caratteri e non numeri: perchè se gli passo un char a cui è stato fatto un cast ad int stampa, mentre se gli passo un int puro non va???
    E' per caso diverso un int da un char a cui è stato fatto un cast in int???

    Aiuto!!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465

    Re: int e cast di un char ad int

    I valori che partono dal char, sono i corrispondenti ASCII ... se scrivi 1, memorizzerai il valore binario 1 e non l'ASCII corrispondente del valore 1 ...

    Quindi, o scrivi

    array[20] = '1';

    o anche

    array[20] = 1 + '0';
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    un char ha 1 byte mi sembra, un int ne ha 4 (32 bit) quindi ovviamente sono molto diversi.. un cast da char ad int e poi successivamente a char non dovrebbe far perdere informazioni.. un cast da int puro a byte fa perdere 3 byte di informazioni..

    edit: oregon ha ragione

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Vorrei fare in modo da incrementare un elemento dell'array:
    codice:
    array[j-2] = '0' + array[j-2] + 1
    Mi ritorna 1 se il valore di array[j-2] è 0, se il valore è già 1 mi ritorna 'b'

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da Metallica
    Vorrei fare in modo da incrementare un elemento dell'array:
    codice:
    array[j-2] = '0' + array[j-2] + 1
    Mi ritorna 1 se il valore di array[j-2] è 0, se il valore è già 1 mi ritorna 'b'
    Di nuovo ... fai confusione tra valore binario e ASCII ...

    Se è 0 binario , quella linea porta il valore a '1' ASCII ...

    Se vuoi lavorare sempre in ASCII, devi inizializzare l'array con '0' ASCII, ovvero

    array[j-2] = '0';

    In seguito, potrai incrementare semplicemente con

    array[j-2]++;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Giusto, sei stato chiarissimo, ho risolto.
    Grazie mille!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.