Autor | Zpráva | ||
---|---|---|---|
happymaster23 Profil * |
#1 · Zasláno: 9. 1. 2009, 18:04:07
Zdravím,
dostal se ke mě takový zajímavý kousek kódu, který mi měl něco vzkázat. Zdá se mi však, že se jeho autor trošičku sekl a výsledkem běhu nebude nic, chci vás proto jako neprogramátor požádat o vyvrácení nebo potvrzení mé domněnky. Pozn.: Na správnost syntaxe nehleďte, jedná se mi pouze logickou funkci. int i = 0; const char text[] = {0×65,0×6C,0×65,0×21,0}; while(text[i] != 0) printf(text[i++]); Děkuji za odpovědi |
||
igamenir Profil |
#2 · Zasláno: 9. 1. 2009, 18:10:45
zaprvé bych řekl že to není php,
za druhé by to fungovat mohlo, pokud tam není nějaká chyba kterou nevidím, a to tak, že to v cyklu projde pole text a vypíše ho po písmenách. to je celé. Text je "ele!" |
||
happymaster23 Profil * |
#3 · Zasláno: 9. 1. 2009, 18:13:39
No jak říkám, ani nevím co to mělo být, ale PHP to podobné je. Jde mi o to, jestli se ta smyčka vůbec provede, když si do "i" uložíme nulu a podmínkou pro provedení té smyčky je, aby to číslo nebylo rovné nule...
|
||
Měsíček Profil |
#4 · Zasláno: 9. 1. 2009, 18:13:42
Co se týče logické funkce - měl by tento (nejspíše C/C++ úryvek) fungovat.
|
||
Měsíček Profil |
#5 · Zasláno: 9. 1. 2009, 18:15:41
Ve skutečnosti by to mohlo probíhat jako "nastav proměnnou 'i' typu int a přiřaď do ní hodnotu '0', pak vytvoř další proměnnou, která bude konstantou a bude pole typu char do char se poté dávají znaky - zde je to řetězec ukončený 0, pak bude smyčka, která bude vypisovat jednotlivé písmena tak dlouho dokud nenarazí na konec řetězce (tedy na 0) kdyby tam nebyla ta podmínka text[i] != 0 nejspíše by program zamrzl.
|
||
Alphard Profil |
#6 · Zasláno: 9. 1. 2009, 18:17:45
šlo by to přepsat do PHP, převod a výpis
<?php $t = array ("0×65","0×6C", "0×65", "0×21"); foreach ($t as $k) echo chr (hexdec ($k)); ?> výsledkem bude ele! (jak již psal igamenir) jinými slovy, fungovat to může „dostal se ke mě takový zajímavý kousek kódu, který mi měl něco vzkázat“ to bude asi celá pointa, vzkaz je "zakódovaný" do (pro většinu lidí nečitelných) 0x65 atd. |
||
happymaster23 Profil * |
#7 · Zasláno: 9. 1. 2009, 18:19:10
Díky za vysvětlení, takže ta smyčka neměla sloužit k opakovanému výpisu toho pole, ale k tomu aby to celé pole postupně vypsala.
Takže ještě jednou díky |
||
bohyn Profil |
#8 · Zasláno: 9. 1. 2009, 18:28:54 · Upravil/a: bohyn
No ja myslim ze to fungovat nebude protoze:
1) 0×65 neni platne hexadecimalni cislo (za nulou ma byt "x" ne ten paznak - 0x65). |
||
happymaster23 Profil * |
#9 · Zasláno: 9. 1. 2009, 18:34:02
A co kdyby to bylo C#?
|
||
Měsíček Profil |
#10 · Zasláno: 9. 1. 2009, 18:40:30
Není.
|
||
Lander Profil * |
#11 · Zasláno: 10. 1. 2009, 09:17:38
Fungovat to opravdu bude.
A printf v C ocekava jen jeden parametr a dalsi jsou nepovinne. Stejne jako v PHP je i v c++ rozdil mezi printf a sprintf. Zatimco printf ocekava jen jeden parametr a vypysuje text do konzole, sprintf vypysuje text do retezce, ktery vsak musi byt prvnim parametrem fce. printf: http://msdn.microsoft.com/en-us/library/wc7014hz.aspx sprintf: http://msdn.microsoft.com/en-us/library/ybk95axf(VS.71).aspx fprintf: http://msdn.microsoft.com/en-us/library/xkh07fe2.aspx Probehne to jen jednou, protoze promenna i zde slouzi jen jako pocitadlo, ktere ukazuje pozici v poli a je pri kazdem cteni pole v cyklu inkrementovana tak dlouho dokud nedosahne polozky pole obsahujici 0, coz nastane uplne na konci. Tento kod je ANSI C/C++. BTW pocitam ze ten paznak co ma byt x je pouze vysledkem nejakeho formatovani (pravdepodobne pri kopirovani kodu z nejake diskuze, prispevku, komentare, citace,... ). |
||
CSharper Profil * |
#12 · Zasláno: 10. 1. 2009, 09:20:02
C# to vazne neni. Tam bz nasledujici uryvek vypadal:
int i = 0; char[] text = new char[]{0×65,0×6C,0×65,0×21,0}; while(text[i] != 0) Console.Write(text[i++]); |
||
Lander Profil * |
#13 · Zasláno: 10. 1. 2009, 09:21:49
A C# to opravdu neni. Bylo by to asi nejak:
int i = 0; char text[] = new char[]{0×65,0×6C,0×65,0×21,0}; while(text[i] != 0) Console.Write(text[i++]); |
||
Lander Profil * |
#14 · Zasláno: 10. 1. 2009, 09:22:27
Heh nekdo me predbeh :D
|
||
Časová prodleva: 15 let
|
0