Pytanie techniczne na temat getch()

0

chciałem napisać program który wczytuje od razu liczbę 1-9 bez wciskania enter i wyświetla na ekranie (tutaj w wersji z +1). Takie coś zrobiłem:

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
int c;
c=getch();
 cout<<c+1;
}

Kiedy przy c nie ma tego +1 to działa dobrze, natomiast z tym +1 po wciśnięciu 1 wyskakuje 50. Ktoś wytłumaczy o co chodzi i jak to zrobić inaczej żeby nie działy się takie dziwne rzeczy?

1

Jeżeli wpisujesz 1 jako znak, to tak naprawdę zmienna c ma wartość 49 bo to daje 1 w kodzie ASCII.
Czyli + 1 daje Ci 50.

Musisz przekonwertować ASCII na cyfrę, dla przykładu:

c = c - '0';
// Albo
c -= '0';
0

ok, dziękuję

1

Kiedy przy c nie ma tego +1 to działa dobrze

???

Nie rozumiem, jakim prawem może to działać dobrze?

Bez względu na to, czy jest +1 przy c czy nie ma, tak czy siak c jest typu int przecież, a wypisywanie coutem inta zawsze wypisze wartość ASCII a nie znak?

0

Sorry, trochę pokręciłem faktycznie. Tak jak mówiłem było gdy zamiast int był char. Bawię się kodami żeby zobaczyć jak działają i cały czas coś zmieniam stąd ta pomyłka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1