2012-08-27 11 views
10

Próbuję wziąć dwie zmienne jako dane wejściowe za pomocą tego fragmentu kodu: -Format specifier do skanowania długo unsigned int

unsigned int i; 

unsigned long int j; 

scanf("%u",i); 

scanf("%lu",j); 

Ale to wywołują następujących ostrzeżeń: -

ostrzeżenie: format ' % u 'oczekuje argumentu typu' unsigned int * ', ale argument 2 ma typ' unsigned int '[-Wformat] ostrzeżenie: format'% lu 'oczekuje argumentu typu' long unsigned int * ', ale argument 2 ma typ "long unsigned int" [-Wformat] Czy ktoś może mi wyjaśnić, co się tutaj dzieje?

Odpowiedz

22

Należy dodać wiodący &, jako scanf pobiera wskaźniki do parametrów wyjściowych. W przeciwnym razie nie może do nich pisać.

scanf("%lu", &i);