Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: [C] Tipi di dati

  1. #1

    Tipi di dati

    Considerati i vari tipi di dati cosidetti "primitivi" che sono:
    caddr_t core address.
    clock_t contatore del tempo di sistema.
    dev_t Numero di dispositivo.
    gid_t Identificatore di un gruppo.
    ino_t Numero di inode.
    key_t Chiave per il System V IPC.
    loff_t Posizione corrente in un file.
    mode_t Attributi di un file.
    nlink_t Contatore dei link su un file.
    off_t Posizione corrente in un file.
    pid_t Identificatore di un processo.
    rlim_t Limite sulle risorse.
    sigset_t Insieme di segnali.
    size_t Dimensione di un oggetto.
    ssize_t Dimensione in numero di byte ritornata dalle funzioni.
    ptrdiff_t Differenza fra due puntatori.
    time_t Numero di secondi (in tempo di calendario).
    uid_t Identificatore di u

    vorrei sapere come vengono rappresentati, ad esempio so che time_t viene generalmente rappresentato come un intero a 32 bit ma e' l'unico di cui so' qualcosa(sigh!). La domanda mi nasce dall'esigenza di visualizzare il loro valore e con la printf non so' che specifica di conversione mettere (%d oppure %s o anche %c boh). Grazie in anticipo.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,302

    Moderazione

    Ciao e benvenuto nella sezione di Programmazione.

    I linguaggi trattati qui sono tanti, pertanto devi indicare quello che stai utilizzando, altrimenti è impossibile fornirti aiuto.

    Ti segnalo inoltre il Regolamento di quest'area in cui troverai tutte le norme da seguire per una buona convivenza in questo spazio.

    In particolare, è importante specificare il linguaggio di programmazione nel titolo della discussione.

    Comunicamelo e provvedo a modificarlo io questa volta.

    Ciao e...buon forum!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3

    Re: Tipi di dati

    Originariamente inviato da parigilanui
    Considerati i vari tipi di dati cosidetti "primitivi" che sono:
    caddr_t core address.
    clock_t contatore del tempo di sistema.
    dev_t Numero di dispositivo.
    gid_t Identificatore di un gruppo.
    ino_t Numero di inode.
    key_t Chiave per il System V IPC.
    loff_t Posizione corrente in un file.
    mode_t Attributi di un file.
    nlink_t Contatore dei link su un file.
    off_t Posizione corrente in un file.
    pid_t Identificatore di un processo.
    rlim_t Limite sulle risorse.
    sigset_t Insieme di segnali.
    size_t Dimensione di un oggetto.
    ssize_t Dimensione in numero di byte ritornata dalle funzioni.
    ptrdiff_t Differenza fra due puntatori.
    time_t Numero di secondi (in tempo di calendario).
    uid_t Identificatore di u

    vorrei sapere come vengono rappresentati, ad esempio so che time_t viene generalmente rappresentato come un intero a 32 bit ma e' l'unico di cui so' qualcosa(sigh!). La domanda mi nasce dall'esigenza di visualizzare il loro valore e con la printf non so' che specifica di conversione mettere (%d oppure %s o anche %c boh). Grazie in anticipo.
    Sembrerebbero tutti tipi della libreria standard del c (anche se non hai espresso il linguaggio ).
    Sono tutti definiti da delle direttive #define nei vari include della libreria, ad esempio time_t in time.h.
    Quindi il mio consiglio è:
    -ti cerchi un programma in grado di effettuare ricrche di parole all'interno di un gruppo di file
    -ti cerchi sul tuo hard disk la cartella che contiene tutti gli headers (file .h) della libreria standard del c, non credo che avrai problemi a trovarla
    -fai cercare al programmasuddetto testi del tipo "#define time_t" e lui ti troverà presumibilmente il file .h dove sta la definizione che cerchi per ciascun tipo.
    Se non sbaglio size_t ad esempio è un int.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #4
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Siamo sicuri siano definiti della libreria standard? Secondo me sono typedef creati dai tipi di dato primitivi. Infatti inclucendo semplicemente la stdlib, dove sono contenuti i tipi di dato primitivi del linguaggio, non li trova.

    #include <stdlib.h>
    #include <stdio.h>
    ...

    error C2065: 'pid_t' : undeclared identifier
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  5. #5
    Originariamente inviato da infinitejustice
    Siamo sicuri siano definiti della libreria standard? Secondo me sono typedef creati dai tipi di dato primitivi. Infatti inclucendo semplicemente la stdlib, dove sono contenuti i tipi di dato primitivi del linguaggio, non li trova.

    #include <stdlib.h>
    #include <stdio.h>
    ...

    error C2065: 'pid_t' : undeclared identifier
    si typedef non define (non so perchè ho scritto define che è per definire macro o costanti)

    Comunque:

    time.h --->
    ******************************
    .......
    #ifndef RC_INVOKED

    /*
    * A type for storing the current time and date. This is the number of
    * seconds since midnight Jan 1, 1970.
    * NOTE: This is also defined in non-ISO sys/types.h.
    */
    #ifndef _TIME_T_DEFINED
    typedef long time_t;
    #define _TIME_T_DEFINED
    #endif
    .......


    #ifndef _CLOCK_T_DEFINED
    typedef long clock_t;
    #define _CLOCK_T_DEFINED
    #endif
    ..........
    ***********************

    Per farti solo due esempi, e li ho trovati in due secondi usando il procedimento che ho descritto

    In effetti mi sono espresso inappropriatamaente anche sul termine "libreria standard",non intendevo il singolo header stlib.h ma in generale tutte le librerie comunemente distribuite con un compilatore unixlike come gcc (o Minggw per windows) e quindi string.h, time.h, ...

    Comunque si capiva anche da qua cosa intendevo...
    Sono tutti definiti da delle direttive #define nei vari include della libreria, ad esempio time_t in time.h.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    nn mi riferivo tanto al tuo messaggio quanto a quello di chi ha iniziato, che parla di tipi di dato primitivi, quando in realtà non sono primitivi
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  7. #7
    Originariamente inviato da infinitejustice
    nn mi riferivo tanto al tuo messaggio quanto a quello di chi ha iniziato, che parla di tipi di dato primitivi, quando in realtà non sono primitivi
    Vabbè tanto erano puntuqalizzazioni che andavano fatte per chiarezza
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8

    [C] Tipi di dati

    Eee no ragazzi! Vi confermo che trattasi di tipi di dati primitivi e non elementari come char o int o long int ecc... Infatti, seguendo il vostro consiglio, ho trovato il file dove sono definiti, che e' sys/types.h, ma con mia grande sorpresa trovo righe del tipo: "typedef __time_t time_t" o anche "typedef __ino_t ino_t", questo mi sembra che confermi che sono tipi primitivi, dal momento che la ridefinizione del tipo di dato che viene effettuata con la typedef ci consente solo di rinominare il dato primitivo che e' preceduto da 2 underscore con un nome senza underscore ma non risolve il mio problema di come rappresentarli con la printf().
    Grazie per la collaborazione.

  9. #9
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    è il contrario... i primiviti sono quelli definiti nel K&C e sono char, int, float e double (fanno parte del linguaggio senza bisogno di alcuna libreria).

    Gli elementari (in realtà nn ho mai sentito parlare di tipi di dato elementari in C. Ne ho sentito parlare in logica e si tratta di elementi costruiti sulla base dei primitivi) sono quelli che dici tu, in quanto costruiti a partire dai primitivi.

    Ad esempio
    typedef __time32_t time_t;
    __time32_t è a sua volta un long int (primitivo + qualificatore)

    Quindi presumo che scoprendo da quale tipo di dato primitivo derivino tu possa scoprire la sintassi per stamparli.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  10. #10

    [C] Tipi di dati

    Il mio problema e' appunto che non so' come scoprire da quale dato derivano questi tipi cosidetti "primitivi" che tu pero' dici essere "elementari" e non ho ragione di non crederti ma poi se ti interessa ti dico dove ho letto la definizione di primitivi ed elementari e perche' viene fatta questa distinzione; nel frattempo pero' non ho ancora capito, scusa l'insistenza, come fare a scoprire da quali dati derivano i tipi di cui alla lista del mio primo messaggio (ino_t time_t ecc..).Grazie della pazienza.

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.