andre82 Opublikowano 29 Stycznia 2004 Zgłoś Opublikowano 29 Stycznia 2004 mam problem jestem zielony z programowania ale jutro mam egzamin z C. :? Pisalem program ale nie dziala tak jak chce :( #include<stdio.h>int main(void){ char bit,mask=32,liczba; printf("nbit=%d mask=%d liczba=%d",bit,mask,liczba); printf("n podaj liczbe :"); scanf("n%d",&liczba); printf("nbit=%d mask=%d liczba=%d",bit,mask,liczba); return(0);}dlaczego pozniej wartosc mask wynosi 0. Z gory dzieki za pomoc. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Sid Opublikowano 29 Stycznia 2004 Zgłoś Opublikowano 29 Stycznia 2004 char?? Ty chyba liczby chcesz?? #include<stdio.h> int main(void) { int bit,mask=32,liczba; printf("nbit=%d mask=%d liczba=%d",bit,mask,liczba); printf("n podaj liczbe :"); scanf("n%d",&liczba); printf("nbit=%d mask=%d liczba=%d",bit,mask,liczba); return(0); } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 29 Stycznia 2004 Zgłoś Opublikowano 29 Stycznia 2004 char?? Ty chyba liczby chcesz??A char to nie liczba?? Problem tkwi gdzie indziej. Tak sie sklada, ze kompilator umiescil te zmienne obok siebie i to odwrotnej kolejnosci, tzn. najpierw jest zmienna 'liczba', na nastepnym bajcie w pamieci jest 'mask', a na koncu 'bit', a wczytujac liczbe przez scanf'a podany jest ciag formatujacy z %d, wiec scanf spodziewa sie integera, ktory ma 4 bajty. A ze dostaje adres do chara ktory ma jeden bajt to nadpisuje tez kolejne 3 bajty. W dwoch z nich sa akurat "nasze" zmienne, wiec zostaja one nadpisane. Liczby sa w pamieci zapisywane odwrotnie tzn. najmlodszy bajt pierwszy - np. 10d = 0A000000h, wiec do mask trafia zero... podobnie zreszta jak do bit i jeszcze jednego bajta po nim. Dla testu mozesz sprawdzic.. ustaw bit na cos != 0 i sprawdz ten kod.. bit sie tez wyzeruje. Sprawdz sobie tez cos sie stanie jak podasz liczbe 256. Pozatym sugeruje odzwyczaic sie od uzywania scanf'a.. jest z nim wiele problemow, bezpieczniej fgets i potem konwersja na liczbe. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
andre82 Opublikowano 29 Stycznia 2004 Zgłoś Opublikowano 29 Stycznia 2004 Dzieki bardzo za pomoc :) Juz rozumiem :) Moze jakos uda mi sie zdac jutro ten egzam .... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...