Wczytanie i wyświetlenie trzech liczb - scanf nie działa poprawnie

0

Chcę wczytać 3 liczby scanf i potem je wyświetlić, ale dzieją się dziwne rzeczy i zamiast wpisanych liczb (np. 1 2 3) wyświetla się "0 0 3". Co robię źle?

short int a,b,c;
scanf("%d %d %d", &a, &b, &c);
printf("%d %d %d", a, b, c);
0

%d jest dla inta a nie dla shorta, dla shorta masz %h. Cuda się dzieją bo wczytując wartość nadpisujesz sobie te zmienne (i kawałek stosu przy okazji).

0

Po zmianie na

scanf("%h %h %h", &a, &b, &c);

jest jeszcze gorzej bo po wpisaniu pierwszej liczby i naciśnięciu entera program się kończy.

0

A printf też poprawiłeś ?

0

Też poprawiłem, ale to i tak nie ma znaczenia, bo program kończy w tym miejscu kończy i nawet nie dociera do printa.

1

http://ideone.com/gaNS2E
Jak się nie nauczysz czytać dokumentacji to programista z ciebie nie będzie
http://www.cplusplus.com/reference/cstdio/scanf/
http://www.cplusplus.com/reference/cstdio/printf/
%h to jest identyfikator dla shorta, ale nie cały format.

0

To nie mogłeś od razu napisać "%hd" a nie "%h"? Ja nie potrafię czytać w myślach...
A dokumentację tą na cplusplus.com czytałem i z niej korzystałem, ale nie wynika z niej że przed d trzeba wstawić h... jest tak beznadziejnie napisana że w ogóle nic z tego nie idzie zrozumieć, a przykładów bardzo niewiele tam jest.

0

A różnicy w opisie h i d nie zauważyłeś.
A podobieństwa pomiędzy h a l też nie zauważyłeś.
Jak się nie nauczysz dostrzegać różnić i podobieństw zwłaszcza w dokumentacji to programista z ciebie nie będzie.

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