Dobrý den,
chtěl bych se zeptat co se stane, když si nechám vypsat celočíselnou hodnotu argumentu typu řetězec.
Například mám printf("%d", "Ahoj");
Vůbec nemůžu nikde zjistit co se mi to vypisuje za číslo na obrazovku.
Díky za každý nápad...
Fórum › C / C++
Řetězec -> integer
Wizard napsal:
V tomto pripade sa ti vypise pointer na retazec.
Aha.. já jsem si myslel něco podobného, něco s adresou, ale pak mi bylo divné, že když tam dám printf("%s", "Ahoj"); tak že by to poznalo že to nemá vypsat adresu, ale samotný řetězec. Protože s tím %s mi to vypíše Ahoj...
Nebo ještě jinak
pokud napíšu toto:
printf("%d %s", "Ahoj", "A");
char *p = "Ahoj";
printf("\n\n%s", p);
tak mi to vytiskne dve stejna cisla...
To je tím že to je jenom cast toho ukazatele? nebo proc jsou stejny?
Ondřej napsal: by to poznalo že to nemá vypsat adresu, ale samotný řetězec
Nepoznalo, je to funkce jako každá jiná a chová se podle zadaných parametrů. A ty jsi tím %s řekl, že další parametr bude ukazatel na řetězec a má se vypsat jeho obsah.
Ondřej napsal: tak mi to vytiskne dve stejna cisla...
Vytiskne se jen jedno číslo. Předpokládám, že jsi to jen špatně napsal a v tom druhém printf mělo být %d.
To je tím že to je jenom cast toho ukazatele?
Tou částí ukazatele jsem myslel to, že printf neví, jaké parametry jsi mu nasázel za formátovacím řetezcem a řídí se jen jeho obsahem. A int (%d) může být menší než ukazatel. Jako když tady ve formátu řeknu ať vypíše dvě 32-bitové hodnoty a bude tam jedna 64-bitová, tak každé %x z ní vezme jen část (na 32bit procesoru).
printf("%x .. %x\n", 0x1122334455667788LL);
Vypíše 55667788 .. 11223344.
nebo proc jsou stejny?
Protože překladač není úplně hloupý a dva stejné konstantní řetězce bere jako jeden.
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 138 hostů
Podobná vlákna
Ifstream.get -> integer — založil Debugger
Problem s overenim integer cisla — založil ceckar_lama
Select ::integer u spatne ulozenych dat — založil zak
Integer ako premenná na načítavanie znakov — založil Cpl
Integer overflow - Aneb, když jsou vám trenky těsné — založil Jeyekomon
Moderátoři diskuze