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);
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);
%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).
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.
A printf też poprawiłeś ?
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.
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.
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.
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.