PDA

View Full Version : Help C++


Nafta
29-09-2002, 11:49
gente mi dite cosa c' di sbagliato in questo?

const char acapo = "\n";

quando lo copilo (col MinGW) dice:

"initialization to `const char' from `const char *' lacks a cast."

Help plz

DM Ilweran
29-09-2002, 12:00
Usa l'apice singolo, non i doppi apici.

Nuitari
29-09-2002, 15:47
Il motivo cmq che i doppi apici identificano un puntatore ad stringa (o ad un array di char se preferisci), che il compilatore traduce come "const char *" per l'appunto. Li invece hai un singolo dato char e per inizializzarlo devi usare come ha detto giustamente ilwe gli apici singoli, che invece identificano un "const char", ossia lo stesso tipo della tua variabile.

Nafta
29-09-2002, 16:43
Ah! Chiaro..

che gli array ancora non li ho studiati..

DM Ilweran
29-09-2002, 17:27
Non esattamente questione di array:
nel momento in cui tu scrivi "\n" tu "quoti" un testo (poi il compiler si comporta di conseguenza, ma questo al momento non ti interessa); nel momento in cui tu scrivi '\n' invece ti riferisci all'intero che nella tabella ascii corrisponde a newline.
Se stai studiando su un testo decente e guardi il tipo char vedi che non altro che un intero, non un carattere: il nome trae in inganno. Il motivo molto semplice, i caratteri sono interi.
Ciao.

Nuitari
29-09-2002, 19:34
Ehmm... non proprio cos Ilwe... il tipo di dati "char" non un intero, bens corrisponde ad un intero ad 8 bit, che molto diverso.

Che poi un carattere sia rappresentato in memoria con la sua controparte numerica ricavata da una tabella come dire che qualsiasi dato sul PC alla fine espresso numericamente.. un po' ovvio.

DM Ilweran
29-09-2002, 20:50
Era solo per far capire che era un numero: se ha fatto quell'errore probabilmente non lo sapeva.
Non sto a parlare dei tipi di dato, in parte perch so C e non C++ (non si sa mai...) in parte perch probabilmente una svista iniziale che sicuramente si toglie quando il suo testo li tratta.

Nafta
30-09-2002, 13:56
Ehi va che non c' nessun errore concettuale, non avevo capito che dovevo usare gli ' invece dei ".. Abituato con " uso sempre quelli, e ho sbagliato solo perch non ho guardato bene l'esempio sul libro...

soulnafein
30-09-2002, 18:22
Il bello del char corrispondente ad un numero ti permette di fare giochetti del tipo

for(i=0;i<10;i++) arraydichar[i]= 'a' + i;

Ci ad esempio ti permette di riempire un array di caratteri dalla A alla L