Προς το περιεχόμενο

C++ Type casting


Dvs

Προτεινόμενες αναρτήσεις

Δημοσ.

Exo ton exis kodika(exo aferesei otidipote den afora to sigekrimeno provlima):

int x=11;

.

.

char y[2];

y[0] = static_cast<char>(x);

 

To provlima einai oti den douleuei kai to y pernei asxetes times!

Δημοσ.

Ποιον compiler χρησιμοποιείς; Κάνε μάι δοκιμή και γράψε:

 

cout << static_cast<char>(11);

 

για να δούμε το αποτέλεσμα. Επίσης είσαι σίγουρος ότι η μεταβλητή x δεν αλλάζει πουθενά και αντί για τον αριθμό 11 να μετατρέπεται κάποιος άλλος;

Δημοσ.

Γηρυόνης: exo ton borland c++ builder 6

Anti gia cout dokimasa na to emfaniso se MessageBox alla evgale tetragona (non printable chars)

GrMikeD: Akoma kai allos aritmo na einai tha eprepe na mou deixnei allon aritmo! oxi tetragona!!!

 

--- Edit ---

xexasa na anafero oti den einai console application alla Win32.

Ama thelete mporo na kano post akrivos ton kodika (einai 3-4 grammes parapano).

Δημοσ.

loipon me tin itoa douleuei kanonika!!!

o pliris kodikas einai:

[ ID: ena TEdit]

void __fastcall TForm1::IDChange(TObject *Sender)

{

int x;

x = ID->GetTextLen() ;

if (x>nameMAX)

{ char y[10];

//y[0] = static_cast<char>(x);

itoa(x,&y[0],10);// <--- doulepse!

MessageBox (NULL,&y[0],"123",0);

};

 

kamia idea giati den douleuei to allo?

Euxaristo

 

-- Edit --- (to xeftilisa!)

OReilly C Pocket Reference <-- exo auto se CHM gia na psaxno grigora alla den exei mesa tin itoa (exe arketes pou kanou tin antistrofi diadikasia alla oxi auti kai oses metatrepoun apo int se string)

 

Δημοσ.

Μάλλον πρόβλημα με τον compiler. Λογικά το static_cast έπρεπε να δουλεύει κανονικά. Για να είσαι απολύτως σίγουρος δοκίμασέ το με κάποιο άλλο πρόγραμμα και κάνε το compile με τον ίδιο compiler.

Δημοσ.

Tora pou to skeftomai isws auto me to static_cast apo ionteger se char na min ginetai giati den einai type safe. Diladi gia paradeigma ama o integer einai -12 poio tha einai to apotelesma? Me to static_cast profanws boreis na dieuruneis alla oxi na perioriseis. Px

 

int a;

double b;

 

a= static_char<int>(B) //illegal!

 

b= static_char<double>(a) //legal!

 

stin deuteri periptwsi borei to double na kratisei ton xwro enos int opote isxuei.

 

Stin prwti epeidi to int katalambanei mikrotero xoro apo to double, to apotelesma einai undefined. Dustuxws i static_char den epistrefei minima lathous i epituxias.

Δημοσ.

Sto paradeigma pou dineis tha mporouse apla na kratisei to akeraio meros mono (i osa simantika psifia mporei).

pantos oute to y[0] = (char*) x doulepse.

 

Diladi gia paradeigma ama o integer einai -12 poio tha einai to apotelesma? <-- tha parei to unsigned int noumero kai tha valei to apotelesma sto char (auto tha eprepe na kanei kata tin apopsi mou :))

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...