C++ nyelvben ha couttal kiíratunk vagy cinnel bekérünk egy változó értékét, akkor történik imlicit típuskonverzió?
"Nem karakter. Karakterlánc. String. Hajrá."
Na, itt derül ki hogy mennyire zokni vagy te ehhez.
A karakter ugyanúgy nem int, mint a karakterlánc.
Itt van, kis piskóta (alább meg a kimenet):
var
teger : integer;
ezis : integer;
ezastr : string;
begin
teger:= 685;
ezis := 51;
ezastr := '_mivan_banyek_';
write(teger,ezastr,ezis);
end.
-
685_mivan_banyek_51
1. Ez nem C++ kód
2. Ez nem string to integer konverzió.
3. Függvény fejlécet ne spórold le.
Próbáld újra, menni fog.
"A karakter ugyanúgy nem int, mint a karakterlánc."
C/C++ nyelven a char az (általában) 1 byte méretű integer típus, szóval de, a karakter egy integer.
Azért nem c++, mert ott láthatóan el vagy tévedve, saját magadat hülyíted, azon körön belül esély nincs arra, hogy világosan láss és érts.
Tudod, nem csak c/c++ nyelven 1 byte méretű int a char. De itt látszik hogy mennyire a bozótosban jársz. A programnyelveken a boolean tipus is egy byte méretű int.
Az essen már le te cseresznyétlen, hogy a klf. tipusok a nyelv egy magasabb absztrakciós szintjén különülnek el, amúgy mindegyik egyesek és nullák sorozata.
De a char az nem véletlenül mégsem int, ahogy a bool sem véletlenül nem int. És ha saját tipust hozol létre, az sem véletlenül nem lesz int.
A terminálok/konzolok esetében a kimenet is és a bemenet is csak char lehet. Ha te bekérsz konzolról egy float tipust, az konvertálódni fog, mivel te csak karaktereket tudsz begépelni, mást nem. Ha a fejeden járkálsz egy hétig, akkor is így lesz ez.
Implicit tipuskonverzió történik abban a példában is, amit írtam és ez történik akkor is, amikor konzolról, winform beviteli mezőjén keresztül, vagy más módon beviszel egy char-tól vagy stringftől különböző tipust. Teljesen mindegy, hogy mi az.
Ugyanez a konverzió történik, csak ellenkező irányban, amikor egy nem char tipust kiiratsz.
Azt írod, ez nem string to int konverzió. Ebben igazad van, ez pont a fordítottja, egy implicit integer to string konverzió.
A problémára nyelvspecifikusan kérdeztek rá, de ez nem nyelvspecifikus.
Minden egyes nyelv így működik, mivel a nyelven kívülről, az oprendszer szintjéről érkezik az adat/vagy oda megy ki (kiírás).
A konzol az konzol egy basicnek, egy pascalnak, egy cnek vagy egy cpp-nek egyaránt.
Te viszont még ennél szimplább dolgok megértéséhez is fű vagy.
Azt van, hogy a user gépeli be a maga dolgát. Ekkor begépel egy számsort, ami legyen 321. Ezek csak látszólag szánok, valójában karakterek.
A gép ezt feldolgozza, de ehhez tudnia kell, hogy mi lesz belőle, marad-e karakter, tehát egy könyv lapjaira vagy egy email-be kerül, vagy műveletet fognak végezni vele, mondjuk egy összeadást, vagy szorzást.
Ezért a bekérés idején a programnyelv, mivel tudja jól, hogy mi lesz belőle, szám-e vagy string, így egy implicit tipuskonverziót hajt végre ha a progi számot, és nem hajt végre semmit, ha stringet vár.
Érted már? Fafej.
"A problémára nyelvspecifikusan kérdeztek rá, de ez nem nyelvspecifikus."
A típuskonverziók témaköre nagyon is nyelvspecifikus, sőt, fordítóspecifikus is lehet. C++. String to int. Lássam.
Az a gond, hogy még a problémát sem sejted.
A hülyék magabiztosságával szórod itt a baromságot, a tanulatlan buta fejedből.
Nem a típuskonverziók témaköréről van szó, hanem az IO néhány tipuskonverziójáról. Az meg az oprendszer szintje, úh kicsit vicces állítás az, hogy nyelvfüggő lenne.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!