Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [c++ definizioni costanti]

    ecco:

    wchar_t a;
    a = L 'A';

    perchè?
    grazie in anticipo
    Se non fosse nato il c++, il mio intelletto sarebbe ancora oscuro a molti...

  2. #2

    Re: [c++ definizioni costanti]

    Prova con:
    codice:
    const int Dim=<dicidi tu>;
    char a[Dim]:
    a="L \' a";
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  3. #3
    lucasp, EHM!

    codice:
    const int Dim=<dicidi tu>;
    char a[Dim]:
    a="L \' a"; // questo è sbagliato, a non è puntatore
    asp.net=cfm=xml, prima di tutto non ho capito un ca**o da quello che hai scritto, cmq mi affido all'interpretazione di lucasp... :gren: E se ciò che dice lui è quello che vuoi fare (ma mi pare strano), questo è il modo più corretto:

    codice:
    char a[] = "L\'A";
    APRILO STO LIBRO PERO'!

  4. #4

    Re: Re: [c++ definizioni costanti]

    Originariamente inviato da lucasp
    Prova con:
    codice:
    const int Dim=<dicidi tu>;
    char a[Dim]:
    a="L \' a";
    intendovo dire di sostituire <dicidi tu> con la dimensione della char

    P.S: come mai ="L \' a"; è sbagliato????????

    x asp.net=cfm=xml se hai un libro, almeno aprilo prima di chiedere(
    nn sono sempre konnesso solo per te:quipy: )
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  5. #5
    nel mio libro c'è scritto:

    wchar_t a;
    a = L'A';

    ma non ho capito nulla, e volevo sapere se qualcuno mi può spiegare questa frase...
    Se non fosse nato il c++, il mio intelletto sarebbe ancora oscuro a molti...

  6. #6
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    852
    supponiamo di dover creare una costante di nome numero che contenga il valore 56

    #define numero 56


    poi tu basta che richiami numero

  7. #7
    Per debbelandia: ma dico, CRISTO, pensaci 100000000000 volte prima di sparare stronzate che non c'entrano nulla... E cmq quella non è una vera costante, è solo una sostituzione di testo in fase di precompilazione (effettuata quindi dal preprocessore).

    Per lucasp:

    intendovo dire di sostituire <dicidi tu> con la dimensione della char
    Ehm...questo l'avevo capito, ma quell'assegnazione non è corretta... In quel caso devi usare una funzione come strcpy. Ecco una versione funzionante del programma:

    codice:
    const int Dim = <decidi tu>;
    char a[ Dim ];
    strcpy( a, "L \' a" );
    Sarebbe stato corretto anche questo:

    codice:
    const int Dim = <decidi tu>;
    char a[ Dim ] = "L \' a";
    Questo perché a = "L \' a" significa assegnare un puntatore (char*) alla base di un array (char[]), che in sostanza è un puntatore costante. Tu con quell'istruzione (parlo di quella tua sbagliata) stai in pratica tentando di spostare l'indirizzo di memoria da dove parte quell'array, dato che una stringa fra "" altro non è che un puntatore alla zona di memoria in cui tale stringa viene memorizzata. Se tale azione la compi al momento dell'inizializzazione, ha però diverso significato:

    codice:
    char numeri[ 7 ] = { 1, 2, 3, 4, 5, 6, 7 };
    char stringa[ 12 ] = { 'B', 'u', 'o', 'n', 'g', 'i', 'o', 'r', 'n', 'o', '!', '\0' };
    char stringaLeggibile[ 12 ] = "Buongiorno!";
    Una stringa si potrebbe inizializzare esattamente come si inizializza un array di numeri (vedi l'array 'numeri'). In effetti l'inizializzazione di 'stringaLeggibile' è uguale a quella di 'stringa', ma C e C++ permettono una sintassi (l'inizializzazione con le "") che come avrai notato è molto più leggibile (parlo di 'stringaLeggibile')! In pratica fa la stessa identica cosa che io faccio manualmente con 'stringa': assegna, uno per uno, i caratteri che compongono la stringa (più il carattere nullo per terminarla, '\0') ai singoli elementi dell'array, cioè ai singoli caratteri della stringa. E questo è proprio quello che fa anche strcpy.

    Ora ti faccio un ultimo esempio:

    codice:
    char* a;
    a = "L \' a";
    Questo è corretto, ma ha un diverso significato. Il programma in questione inizializza una zona di memoria (statica) del programma memorizzandovi la generica stringa "L \' a". Poi l'assegnazione non fa una copia della stringa, ma fa puntare 'a' alla zona di memoria in cui quella stringa è stata memorizzata.

    Capito?

    Credo di essere stato sufficientemente esauriente in proposito...o no?

    Per asp.net=cfm=xml: ho individuato il problema, lucasp ha svagato moltissimo...

    Quella L di fronte a 'A' significa che quel carattere è inteso come un carattere esteso, cioè a doppio byte (16 bit). Per ora lascia stare queste peculiarità che, in questa fase, ti interessano ben poco... Se il libro forza proprio sul 'wchar_t' dall'inizio e non sul 'char', beh, forse non è un libro troppo razionale nelle spiegazioni o semplicemente non un libro con cui iniziare... Per quello che vuoi fare tu ti basta questo:

    codice:
    char a;
    a = 'A';
    Quindi dimentica 'wchar_t' e quella L davanti. :tongue:

    A risentirci.

    C ruleZzZ

  8. #8
    r0x, sei un dio !!! grazie per le delucidazioni

    debbelandia, se nn sai stai zitta


    P.S: r0x che compilatore usi?????? io ho Dev C++4 e sto skarikando il C++ Builder 6 della Borland(173 mb con un ISND) e tu????
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  9. #9
    ok, ho capito molte cose, ma il libro vuole fare attenzione alla L, cmq, la L significa esteso.

    grazie
    cxiao
    Se non fosse nato il c++, il mio intelletto sarebbe ancora oscuro a molti...

  10. #10
    Il C++ Builder è una ciofeca... Per programmare in Windows l'ambiente migliore è Visual C++, e non ci piove. Quindi se puoi rimediarlo, vai alla grande. Dev-C++ evitalo, se puoi. E' molto buggato.

    Ciao.

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.