Skocz do zawartości

This Decimal Constant Is Unsigned Only In Iso C90


happy-angel

Rekomendowane odpowiedzi

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 smile.gif

Odnośnik do komentarza
Udostępnij na innych stronach

Bez sensu ale dobra wink.gif 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

Ad 1) Prawde mowiac nie wiem, ale dziala smile.gif 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 smile.gif ), albo zrezygnowac ze znaku.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
×
×
  • Dodaj nową pozycję...