Pytanie techniczne na temat getch()

Pytanie techniczne na temat getch()
Z1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
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:

Kopiuj
#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?

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
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:

Kopiuj
c = c - '0';
// Albo
c -= '0';
Z1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

ok, dziękuję

KM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 473
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?

Z1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.