Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92

    [c]-Definire un nuovo tipo.

    Scusate è da un pezzo che mi chiedo come fare per creare tipi di dimensioni volute nel C.

    ad esempio se io volessi creare un intero a 64 bit come faccio.

    Non so manco se è possibile, inoltre e poi possibile usarlo nella dichiarazione di tipo.

    che ne so una dichiarazaione del tipo:
    Nuovo_tipo variabile;

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92
    scusate so stato impreciso, non un nuovo tipo do intero ma semplicemente un nuovo tipo snza partire da quelli base.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Cosa intendi di preciso?

    Puoi scrivere

    codice:
    typedef struct card{
       char cognome[30];
       char nome[30];
       int eta;
    } Persona;
    
    int main()
    {
    	Persona io;
    
    	strcpy(io.cognome, "Rossi");
    	strcpy(io.cognome, "Paolo");
    	io.eta = 30;
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [c]-Definire un nuovo tipo.

    Originariamente inviato da salvio78
    Scusate è da un pezzo che mi chiedo come fare per creare tipi di dimensioni volute nel C.

    ad esempio se io volessi creare un intero a 64 bit come faccio.
    Puoi creare delle strutture ad esempio, vedi la risposta di oregon.

    Ma nuovi tipi di dati interi più larghi di quelli supportati dal compilatore no! Cioè se tu volessi, per ipotesi, creare un nuovo tipo intero a 128 bit, non potresti farlo. Il compilatore infatti come farebbe a sapere come gestire le varie operazioni con il nuovo tipo di dato???

    Comunque sappi che ormai la maggior parte dei compilatori a 32 bit supporta già dei tipi a 64 bit.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92
    e se in teoria con un campo struttura creassi una cosa del genere

    struct { unsigned val1: 8;
    unsigned val2: 8;
    unsigned val3: 8;
    unsigned val4: 8;
    } Integer;

    ad esempio potrei gestire la variabile struttura come un tipo intero in modo da generare tipi capienti a piacere?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    La "capienza" e' una cosa ... in quel modo crei un dato da 32 bit ...

    Ma non lo puoi "trattare" ... il compilatore non sapra' come operare con il nuovo tipo di dato, ovvero (vedi risposta di andbin) non saprebbe come fare, ad esempio, una addizione tra due dati di quel tipo.

  7. #7
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Originariamente inviato da oregon
    La "capienza" e' una cosa ... in quel modo crei un dato da 32 bit ...

    Ma non lo puoi "trattare" ... il compilatore non sapra' come operare con il nuovo tipo di dato, ovvero (vedi risposta di andbin) non saprebbe come fare, ad esempio, una addizione tra due dati di quel tipo.
    E se faccio l'overloading dei suoi operatori?
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da XWolverineX
    E se faccio l'overloading dei suoi operatori?
    Allora stiamo parlando di C++ e non di C ...

  9. #9
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    Originariamente inviato da oregon
    codice:
    typedef struct card{
       char cognome[30];
       char nome[30];
       int eta;
    } Persona;
    
    int main()
    {
    	Persona io;
    
    	strcpy(io.cognome, "Rossi");
    	strcpy(io.cognome, "Paolo");
    	io.eta = 30;
    }
    se c'è una cosa che faccio fatica a comprendere sono proprio i tipi "stringa"... che senso ha usare un vettore di char (e dover usare la strcpy) quando si possono utilizzare i puntatori a char?

    codice:
    typedef struct card{
       char *cognome;
       char *nome;
       int eta;
    } Persona;

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da Lak3d
    se c'è una cosa che faccio fatica a comprendere sono proprio i tipi "stringa"... che senso ha usare un vettore di char (e dover usare la strcpy) quando si possono utilizzare i puntatori a char?

    codice:
    typedef struct card{
       char *cognome;
       char *nome;
       int eta;
    } Persona;
    E che vuoi dire? Finisci il discorso ...

    Una volta che hai il puntatore, devi allocare lo spazio dinamicamente per la stringa e userai comunque la strcpy per copiarci dentro i dati.

    Se parli di una "efficienza" nell'utilizzazione dello spazio, bene, altrimenti non capisco.

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.