happy-angel Napisano Styczeń 27, 2006 Zgłoszenie Share Napisano Styczeń 27, 2006 Witam problem nastepujacy: $ cat x.cpp int main() { double nX=3000000000; return 0; } $ g++ x.cpp -o x t.cpp: In function `int main()': t.cpp:5: warning: this decimal constant is unsigned only in ISO C90 Z niecierpieniem czekam na wasze posty Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
KozaK Napisano Styczeń 27, 2006 Zgłoszenie Share Napisano Styczeń 27, 2006 Masz racje. U mnie tez kompilator wyplul taki blad. Sprobuj napisac tak: int main() { double nX = 3000000000.0; // dodalem kropke i jeszcze jedno zero return 0; } U mnie zadzialalo. Pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
happy-angel Napisano Styczeń 27, 2006 Autor Zgłoszenie Share Napisano Styczeń 27, 2006 Bez sensu ale dobra w domu bede to sproboje UPDATE: No masz racje dziala. Mialem za cel napisanie programu ktory przypiesz trzy miliardy do signed i unsigned. Zrobilem to w nastepojacy sposob: $ cat x.cpp #include <iostream> using namespace std; int main() { signed nA=static_cast<signed>(3000000000.0); unsigned uB=static_cast<unsigned>(3000000000.0); cout << "nA: " << nA << endl << "uB: " << uB << endl; return 0; } $ ./x nA: 2147483647 uB: 3000000000 1) Dlaczego ma byc zero dziesietnych by kompilator nie wypluwal bledu? 2) usigned wyswietla wlasciwa liczbe z tego powodu ze ma zwiekszony zakres liczb dodatnich kosztem ujemnych. Dobrze to rozumiem? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
KozaK Napisano Styczeń 28, 2006 Zgłoszenie Share Napisano Styczeń 28, 2006 Ad 1) Prawde mowiac nie wiem, ale dziala Moze w ten sposob kompilator ma pewnosc, ze liczba jest odpowiedniego typu. Musisz sie spytac kogos, kto jest lepszy z teorii programowania. Dla mnie od rozwazan teoretycznych wazniejsze jest to, zeby program dzialal. Ad 2) zakres liczb typu "double" to o ile sie nie myle [ -2^31 ; 2^31 - 1 ], czyli po policzeniu wychodzi [ -2147483648 ; 2147483647 ], co oznacza, ze masz racje. W zwaizku z tym jesli chcesz uzyc liczby spoza tego zakresu, to albo musisz uzyc typu "long double" (ktorego zakresu nie pamietam, ale jest duzo wiekszy ), albo zrezygnowac ze znaku. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
happy-angel Napisano Styczeń 28, 2006 Autor Zgłoszenie Share Napisano Styczeń 28, 2006 Ok dzieki za pomoc. Co do teori to ona w programowaniu idzie w noge z praktyka wiec wypada wiedziec o co chodzi zeby nie robic glupich bledow po czym godzinami dochodzic do tego co jest co Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się