» Poradna » Programy

C++ dotaz

 |   |  Microsoft Windows 10 Firefox 74.0

Dobrý den,potřeboval bych se zeptat na jednu maličkost týkající se C++ ve Visual Studio. Mám funkci, která má parametr char. Pokud např pošlu do metody znaky jako '=', '<' nebo '>' tak vždy mi to příjde do metody jako '\x3'. Nedaří se mi změnit to tak, aby pro = bylo =, pro < zase < atd.Neví tady někdo jak to opravit?

Mohlo by vás také zajímat

Odpovědi na otázku

 | Microsoft Windows 10 Chrome 80.0.3987.132

Odpovidalo by se o mnoho lepe, kdyby byla pridana prinejmnesim deklarace metody, jeji volani a pripadne jakym zpusobem overujete, ze tam je '\x3'. Bez toho lze konstatovat pouze, ze neco je spatne (a ani C++ ani Visual Studio to nebude :) )

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 74.0

Mám v metodě podmínky. Pokud vytvořím proměnnou char s hodnotou = nebo < nebo > přímo v metodě a tak vidím v debugu že vlezu do jedné z těch podmínek. Problém je jen tehdy, pokud do metody pošlu parametr char (např taktometoda('='). V tomto případě mi do metody příjde '\x3' a je jedno jaký znak tam posílám, vždy to je to samé.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 80.0.3987.132

A jaky je prototyp (deklarace) metody?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 74.0

Dělá mi to v jakékoliv metodě. I pokud ta metoda je např:void metoda(char ch){ if(ch == '=') něco.....}tak mi to do toho ifu nevleze i přesto že jsem do metody poslal '=', v debugu vidím že to obsahuje '\x3'. U stringu mi to nedělá. Ale snažím se přijít na to proč to tak blbne, když by to mělo jet v pořádku.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 80.0.3987.132

Tohle je dobre. Nemuze tam dochazet ke korupci zasobniku? Ukazuje debugger '\x3' ihned, kdyz se vleze do te metody?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 74.0

Ano je to hned, když se vleze do metody.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 74.0

Používej ten pastebin, je to o dost čitelnější (zvlášť pokud tam vybereš zvýraznění přímo pro C++):https://pastebin.com/3NYFSW76Ano, na pár řádek to zase takový smysl nemá, ale rozdíl snad vidíš sám.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 68.0

=> void metoda(char *ch)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 74.0

Přes pointer to funguje, díky. Každopádně nechápu proč to nejelo bez něj, když by mělo.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 80.0.3987.132

Musi to jit i bez nej. Pokud to funguje s pointerem tak to urcite neni mozne volat stylem metoda('='). Nebo je to vic spatne, nez tady vsichni tusime.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 80.0.3987.132

Zkus to treba tady: https://www.onlinegdb.com/online_c++_compilerTa jednoducha metoda funguje naprosto korektne.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 74.0

Ano tady mi to funguje, i přesto, že ve Visual Studio ne.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 80.0.3987.132

Tak tam musi byt nejaky rozdil v kodu. Ja to zkusil v VS Community 2019 a funguje to bez problemu. Neverim na chybu VS.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 74.0

A nechceš sem hodit, část kódu, ať víme, o co jde? Ideálně přes pastebin (pokud to dáš přímo, tak poradna zmrví formátování).

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Maličkost, Char