Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » maddog 14:38
 » elliot_pl 14:37
 » KHot 14:37
 » [yureq] 14:37
 » 3kawki 14:25
 » Wedelek 14:17
 » rainy 14:15
 » Pio321 14:15
 » JE Jacaw 14:09
 » Sherif 14:08
 » El Vis 14:00
 » piwo1 13:57
 » Robek 13:56
 » alkatraz 13:56
 » adolphik 13:50
 » Hitman 13:47
 » NimnuL 13:40
 » ligand17 13:36
 » XepeR 13:35
 » Chrisu 13:32

 Dzisiaj przeczytano
 36889 postów,
 wczoraj 25433

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2025
A R C H I W A L N A   W I A D O M O Ś Ć
    

C++ pytanie dotyczące wielkości danych , borg18 29/08/07 18:48
Mam takie pytanko, mam programik:
#include<iostream>
using namespace std;
int main()
{
double duzy=0xFFFFFFFF;
cout<<duzy;
}
Wielkość FFFFFFFF to na binarny rowne 32 jedynki, dlaczego jak dodam jeszcze jedno F to wyskakuje błąd zbyt dużego rozmiaru? ponieważ komp pracuje na 32 bitach? moze to jest głupie pytanie ale...:)

https://programy.net.pl - duża dawka
programów ;)

  1. .:. , Shneider 29/08/07 18:53
    tak to glupie pytanie.

    .:: Live at Trance Energy ::.

  2. ale może , borg18 29/08/07 19:04
    odpowiecie?:)

    https://programy.net.pl - duża dawka
    programów ;)

    1. Proszę bardzo: , DJopek 29/08/07 20:18
      Zmień w końcu ten kierunek studiów ;D

      1. dobra rada , recydywista 29/08/07 20:23
        przeczytaj książkę o podstawach C++ (Grębosz się nada)

        Computers are useless. They can only
        give you
        answers.

        1. miało być pod głównym :> , recydywista 29/08/07 20:24
          666

          Computers are useless. They can only
          give you
          answers.

  3. poczytaj sobie o rozmiarach zmiennych w C++ , Master/Pentium 29/08/07 20:10
    to naprawdę podstawy.

    Nie ma tego złego , co by się w gorsze
    obrócić nie mogło - jak nie wierzysz
    włącz komputer :-)

  4. koledzy mają rację, może jednak poczytaj, a później pytaj... , carlosA 29/08/07 20:28
    http://pl.wikibooks.org/wiki/C/Zmienne

    #whatever

  5. ale jesteście , Soulburner 29/08/07 20:39
    jest forum to człowiek pyta! Teraz będę się bał zapytać tutaj o cokolwiek, bo dostanę odpowiedź "trzeba było chodzić na wykłady z architektury komputerów, tera se radź sam!" :P

    You must gather your party before
    venturing forth.

    1. hmm , macol 29/08/07 20:49
      widac nie sa Ci znane wczesniejsze watki zakladane przez kolege borg18 ;) Zerknij w archiwum a pozniej osadzaj innych ;P

      ja chce 100% jasne tpc

    2. Polecam archiwum :) , DJopek 29/08/07 20:49
      I posty borga18, dla mnie już od pewnego czasu jest postacią kultową jeżeli chodzi o tego typu pytania (bez obrazy borg18 ;).

      1. Mój ulubiony wątek : , Barts_706 30/08/07 12:00
        http://twojepc.pl/...iwum.php?r=2007&id=122401

        (^___^)

        A tak serio, to ja osobiście też uważam, że jest niezłym leniuchem (Google!) i dosyć nieprecyzyjnie się wysławia, ale nie wiem czemu budzi aż tyle negatywnych uczuć tutaj. Nawet jeśli skończy tę uczelnię, to i tak nie stanowi dla mnie zagrożenia w sensie konkurencji.

        Że się obija na studiach, ba, a bo to on jeden? Ja sam byłem i jestem leniem, na dodatek uważam że zbyt dużo się uczyłem i trzeba było więcej imprezować - może chłopak właśnie taki program realizuje. No i nie mówię że trzeba mu w tym pomagać, ale też nie ma co za każdym razem po nim jeździć.

        Na. Rzekłem.

        _______________________________

        http://jawnesny.pl

        1. Hmmm... , DJopek 30/08/07 13:49
          Ale on we mnie nie budzi żadnych negatywnych uczuć, po prostu śledząc jego postową karierę na boardzie nie mogę wyjść z podziwu :-) Ja też byłem leniem (i jestem, a jakże! ;) ale nie mam w sobie tyle odwagi ile ma borg, dlatego tak się 'przyczepiłem'.

          1. E tam, ja nie o Tobie mówiłem... , Barts_706 30/08/07 14:53
            ...Ty go traktujesz z łagodną wyrozumiałością. Zresztą w tym akurat wątku i tak kurtuazyjnie wszyscy podeszli do kolegi, jak na to co bywało.

            _______________________________

            http://jawnesny.pl

          2. A że odwagę ma... , Barts_706 30/08/07 14:54
            ...żeby nie rzec tupecik, to fakt. Mnie niekiedy by nie przyszło do glowy... Ale to chyba dobrze, że młodzież nie ma kompleksów?...

            _______________________________

            http://jawnesny.pl

            1. Wiesz, to ma dwie strony medalu , DJopek 30/08/07 14:56
              Kompleksów dobrze jest nie mieć, a przynajmniej umieć sobie z nimi radzić, ale z drugiej strony troche rozsądku i samokrytyki też by się przydało :)

              1. He, he... no przydałoby się... , Barts_706 30/08/07 15:16
                ...ale za to dostarcza nam darmowej rozrywki...

                _______________________________

                http://jawnesny.pl

                1. i czego , borg18 31/08/07 14:49
                  jeszcze chcecie:P

                  https://programy.net.pl - duża dawka
                  programów ;)

                  1. Ja bym chciał, żeby nie zabrakło wejściówek... , Barts_706 31/08/07 15:17
                    ...do dyskoteki Ageha na 8 września, bo będzie grał tam Phil Hartnoll (połowa Orbitala) i NewDeal.

                    http://www.ageha.com/ -> Schedule -> Sep -> 8 - Clash 26

                    Jeśli mi to zagwarantujesz, to jesteś moim najlepszym kumplem i napiszę Ci następny program w C++. :D

                    _______________________________

                    http://jawnesny.pl

  6. ale ja czytalem , borg18 29/08/07 20:41
    i wiem ze do doubla mieszcza sie 64 bity a tu FFFFFFFF jest tego 32 to nie rozumiem dlaczego on nie przyjmuje wiecej o jeden F jak i tak sie zmiesci w 64, czy ja źle myśle? dlatego pomyslalem ze to komputer moze poprostu jest ogranicznikiem jako pracuje na 32....

    https://programy.net.pl - duża dawka
    programów ;)

    1. a typ danych ? , Master/Pentium 29/08/07 21:25
      poczytaj o zapisie danych zmiennoprzecinkowych.

      Nie ma tego złego , co by się w gorsze
      obrócić nie mogło - jak nie wierzysz
      włącz komputer :-)

      1. załamujesz trochę, ale ja jestem cierpliwy , carlosA 29/08/07 21:30
        mamy 0,5 i 0,5476 -która z nich jest precyzjniejsza ? (pytanie retoryczne, retoryka na wikipedii ;-) ) typ double to float o PODWÓJNEJ PRECYZJI, bez obrazy stary, ale czytasz i nie rozumiesz.

        #whatever

        1. pod borgiem miało być, sorry , carlosA 29/08/07 21:31
          123

          #whatever

  7. borg18 strikes again! Anyway - sprawdź sobie max. rozmiar za pomocą: , Rhobaak 29/08/07 21:27
    std::numeric_limits<double>::max(); (dołącz nagłowek <limits>)

    I zapisz się na kurs obsługi google;)

    Kor2dual3,2hZ overkloc,4Gbit Ram
    G-forc 460 gietex,barakudy
    Children of Neostrada Association MVP

  8. jeszcze jeden link , carlosA 29/08/07 21:33
    http://darkcult.republika.pl/ -przeczytaj chociaż podstawy

    #whatever

  9. To może inaczej... , Umek 29/08/07 23:07
    jeśli w swojej bazie danych przyjąłeś np: na nazwisko osoby 30 znaków to nie upchniesz tam 32 zn...
    Podobnie z typami liczbowymi - jest ich kilka, każdy ma zakres wartości jakie da się w niego upchnąć, a pisząc sam wybierasz wg potrzeb typ który ma sens (rozmiar, najlepiej najmniejszy sensowny) dla wartości jakie będziesz w nim trzymał. No jakoś tak...
    Pozdr.

    1. namieszasz chłopakowi , carlosA 29/08/07 23:20
      to nie jest zmienna łańcuchowa, chociaż rzecz jasna wszystko mieści się w długości zmiennej.

      #whatever

  10. Właściwie , JOTEM 29/08/07 23:51
    to borg18 ma rację.
    Obsmarowaliscie go tu, a tymczasem w jego pytaniu jest sporo sensu. Mam nadzieję, że ten sens wyszedł świadomie ;-)
    Typ double to typ zmiennoprzecinkowy i jego reprezentacja akcelerowana przez koprocesory 386 ma postać 11 bitów wykładnika i 52 bity części ułamkowej. W pierwszym przybliżeniu więc 40 bitowa liczba, którą próbuje upchnąć tam borg18 powinna wleźć bez problemu bez utraty informacji (przypominam - double - 52 bity na część ułamkową).
    W gwoli wyjaśnienia borgowi - tępota twojego kompilatora połaczona z formą zapisu (szesnastkowy całkowity) każe mu założyć, że chcesz operować na liczbach całkowitych, a tam kompilator ogranicza się do 32 bitów - przekroczenie zakresu następuje poprzez przekroczenie zakresu deklaracji stałej.
    Użyj zapisu zmiennoprzecinkowego:
    double duzy=1,099511627775e+12;
    Da to efekt wpisania 0xFFFFFFFFF, ale kompilator nie będzie zaabsorbowany "całkowitością" liczby.

    Ograniczeniem jest więc starość lub/i tępota kompilatora - ograniczenie jego stałych stałoprzecinkowych do 32 bitów. Nowsze kompilatory znają już zwykle int64 i przyjęły by to (może z drobnymi modyfikacjami).

    Poryjemy..zrobaczymy

    1. z ciekawości , carlosA 30/08/07 00:01
      pytam, bo daleko mi do programisty, int_64 to cecha kompilatorów M$, a "duży" czyli long double też nie jest w standardzie C++ ?

      #whatever

      1. int64 , JOTEM 30/08/07 00:21
        to cecha kompilatorów pod Windowsa - bez tego typu nie da się praktycznie pisać w DirectX, chociaż choćby głupi QueryPerformanceCounter wymaga int64 a to zwykła funkcja systemowa. Bez tego typu trzeba tworzyć przedziwne protezy. Nie wiem czy long double jest w C++ bo z niego (z C++) nie korzystam. Zrozumiałbym jednak, gdyby nie był, bo to obrona przed tępotą programistów często nadużywających go.
        Pozdrawiam.

        Poryjemy..zrobaczymy

        1. a to mi naświetliłeś sprawę , carlosA 30/08/07 00:37
          Dzięki, directa nie dotykam, starczy mi winapi i moje proste bazy :-)

          #whatever

        2. Zaraz, zaraz, kolego JOTEM... , Barts_706 30/08/07 07:06
          ...rozważania powyżej bardzo mądre, ale żeby int64 był "cechą kompilatorów Windows" to się absolutnie nie zgodzę.

          Nie wnikam czy to już jest część standartu, chociaż logicznym byłoby że tak, ale na pewno w programach które piszę pod Linuksem i kompiluję GCC takich zmiennych używam i programy mają się dobrze. :]

          _______________________________

          http://jawnesny.pl

          1. Jak na to odpowiednio spojrzeć to rację ma CarlosA , JOTEM 30/08/07 10:56
            Rozumując ściśle to integer 64 bitowy w postaci __int64 jest właściwie cechą kompilatorów MS. Cechą, którą szybko przejęły liczne kompilatory pod Windowsa (nie tylko C i C++) i tam się to rozwinęło dynamiczniej niż gdzie indziej.
            MS musiał coś takiego wprowadzić, bo użył tego w systemie - nie mógł czekać aż się wszystko wyklaruje.
            Po prostu szybko odczułem przymus wprowadzenia i korzystania tam z takiego typu.

            Nie śmiem twierdzić, że integer 64 bitowy jest wyłącznie cechą kompilatorów pod Windowsa!! Pod nazwą long long jest chyba dziś wszędzie (od 99r oficjalnie w C, ale nie w C++).
            Ja używam long longa w gcc kompilując na ARM'a ;-)
            Jednak jeszcze w wersji gcc 2.9.5 z 99 roku były błędy long long'a.

            Z drugiej strony - czego by nie mówić o MS, to czasem ich podziwiam.
            Odcięli się od zależności typów od platformy, odcięli się od bajzlu z longami i wprowadzili konkretne typy sami.
            ja uważam, że ze względu na konieczność trzymania się standartów w C panuje niekonsekwencja, zwykle jest przecież:
            char - 8 bitów
            short INT - 16 bitów
            INT - 32 bity
            long INT - 32 bity (dlaczego, przecież w tym momencie to bezsens, powinno być 64)
            long long INT - 64bity.

            Niedługo będzie long long long long int, i zgodnie z tym powyżej będzie 128 bitowy ;-)

            Poryjemy..zrobaczymy

            1. Momenick... , Barts_706 30/08/07 11:41
              ...a więc tak :

              - __int64 jest faktycznie konstrukcją Microsoftową. Ale Ty w poprzednim poście napisałeś o int64.

              - Faktycznie, opis Twój powyżej z long i long long jest jak najbardziej poprawny. Sprawdziłem.

              - Ponieważ int może zajmować różne ilości bitów w funkcji sprzętu i kompilatora, a nasz kod miał być dosyć portable, użyliśmy biblioteki Boost (bardzo polecam) i następującej konstrukcji :

              typedef boost::int64_t int64;

              W ten sposób "nasz" int64 ma zawsze 64 bity.

              Zatem ja nieprecyzyjnie napisałem o int64 pod Linuksem, a Ty wcześniej napisałeś nieprecyzyjnie o int64 pod Windowsem.

              Myślę że teraz już wszystko sobie wyjaśniliśmy, a i postronni, jak autor wątka, mogli się trochę dokształcić.

              Pozdrawiam,

              Barts

              _______________________________

              http://jawnesny.pl

              1. int64 , JOTEM 30/08/07 12:16
                dlatego, że C używam tylko na inne platformy sprzętowe, pod Windowsem używam obecnie głównie Delphi, a tam mam int64 - takie skrzywienie :-)
                Pozdrawiam.

                Poryjemy..zrobaczymy

    2. A nie wystarczy napisać 0xFFFFFFFFFL? , Rhobaak 30/08/07 00:30
      Nie mam pod ręką kompilatora, żeby sprawdzić.

      Kor2dual3,2hZ overkloc,4Gbit Ram
      G-forc 460 gietex,barakudy
      Children of Neostrada Association MVP

      1. L to od Long int , JOTEM 30/08/07 00:42
        a on zwykle w C++ ma właśnie 32 bity.
        Trzeba by użyć prawdopodobnie modyfikatora do Long long int, a go nie znam. Nie ma się o co spierać - temat zamknięty.

        Poryjemy..zrobaczymy

        1. Sorry, powinno być LL na końcu. , Rhobaak 30/08/07 07:43
          Stała jest traktowana wtedy jako 64b integer.

          Kor2dual3,2hZ overkloc,4Gbit Ram
          G-forc 460 gietex,barakudy
          Children of Neostrada Association MVP

          1. dziala , borg18 30/08/07 10:26
            hehe:) czyli poprostu to kompilator...pracuje na dev c++

            https://programy.net.pl - duża dawka
            programów ;)

    3. dzięki , borg18 30/08/07 10:23
      o to mi chodzilo:)

      https://programy.net.pl - duża dawka
      programów ;)

    4. czyli jak by , borg18 30/08/07 10:37
      double chociaz ma 64bity i miesci sie tam te 64 jedynki, to jest tak że większa cześć jest po przecinku i dlatego realnie on też nie wykracza poza 32 tylko tu chodzi ze jest bardziej precyzyjny i zasięg idzie w stronę po przecinku?

      https://programy.net.pl - duża dawka
      programów ;)

      1. teraz mnie rozczarowujesz , JOTEM 30/08/07 11:07
        napisałem, że ma 52 bity i tyle się zmieści do niego bez utraty dokładności.

        Tak duże liczby podawać musisz na starych kompilatorach w formacie zmiennoprzecinkowym. Na nowszych kompilatorach (a Twój jest "nowszy") wystarczy to co podał Rhobaak.

        Poryjemy..zrobaczymy

        1. no tak , borg18 30/08/07 11:10
          to LL wystarcza ale jak ma 52 bity szerokości to czemu nie pomieści w nich liczby 0xFFFFFFFF plus ten np dodatkowy F? czy to po prostu ograniczenia kompilatora? Gubie się w tym:(

          https://programy.net.pl - duża dawka
          programów ;)

          1. nie ograniczenia , JOTEM 30/08/07 11:24
            takie ZAŁOŻENIA kompilatora.
            Podajesz do typu zmiennoprzecinkowego liczbę stałoprzecinkową i się dziwisz. Kompilator zakłada, że każdy literał typu stałoprzecinkowego domyślnie ma być zwykłym intem!
            Kompilator stara się być miły, sprawdza czy gdzieś literówki nie zrobiłeś. Musisz go zrozumieć.

            Poryjemy..zrobaczymy

            1. czyli , borg18 30/08/07 11:35
              jak ja daje 0xffffffff to w double 64 bitowym mam 4.29497e009 czyli tutaj wychodzi max liczba czyli 4294967295, jaka mieści się w 32 bitach - dobrze myśle? ale dlaczego pisze ze double ma 64 bity jak tu sie zmieściol tylko 32, kurna nigdy tego nie pojme...dzięki za wyjaśnienia i nie krzyczcie na mnie

              https://programy.net.pl - duża dawka
              programów ;)

              1. w double zmieści się , JOTEM 30/08/07 11:53
                dodatnia :
                1.7976931348623158e+308

                jak ją wpiszesz ZMIENNOPRZECINKOWO!

                STAŁOPRZECINKOWA zmieści Ci się 52 bitowa bez utraty dokładności. Musisz tylko jasno powiedzieć kompilatorowi, że chcesz zrobić taką nietypową rzecz - wpisać do typu zmiennoprzecinkowego ogromną stałą stałoprzecinkową.
                Do tego służą te dwie literki L.
                Rozum je (te literki) tak:
                "Te....kompilator...będę teraz robił trochę pokręconą rzecz - uważaj więc - będę wpisywał wielką stałą stałoprzecinkową do zmiennoprzecinowej zmiennej. Bądź więc wyrozumiały - owszem robię takie dziwactwo ale pozwól mi to zrobić tak czy siak"

                Do double mozesz wpisać KAŻDĄ liczbę typu long int. To jest bezpieczne. I tak zakłada twój kompilator. Zaś gdy wpiszesz PONAD 52 bitową long long, to stracisz kilka cyfr znaczących - to jest niebezpieczne i dlatego kompilator musi być zmuszony - on musi wiedzieć, że robisz to świadomie.

                Mój GCC nie wymaga normalnie LL, co czyni go nieco NIEBEZPIECZNYM - Tobie bym go więc odradzał.

                Poryjemy..zrobaczymy

                1. a tak w ogóle , JOTEM 30/08/07 11:55
                  to do dużych liczb stałoprzecinkowych jest

                  Poryjemy..zrobaczymy

                  1. long long int , JOTEM 30/08/07 11:57
                    lub w innych kompilatorach
                    int64 (__int64)

                    a nie double.

                    Poryjemy..zrobaczymy

                    1. zrozumielam , borg18 30/08/07 12:01
                      dzięki wielkie za poświęcenie:)

                      https://programy.net.pl - duża dawka
                      programów ;)

  11. linijki:PPP , acd 30/08/07 10:39
    123

    >>> We are The BOARD. Resistance
    is futile.<<<

    1. eetam spaliłem, miało być pod odpowiedzią Rhobaaka , acd 30/08/07 10:40
      123

      >>> We are The BOARD. Resistance
      is futile.<<<

  12. polećcie , borg18 30/08/07 11:04
    jakiś dobry kompilator bo widze ze dev sie gubi a ja chce w koncu sie przekonac:)

    https://programy.net.pl - duża dawka
    programów ;)

    1. Ale Twój jest dobry , JOTEM 30/08/07 11:18
      Niestety to Ty nie znasz go wystarczajaco.
      Postapił bardzo formalnie ale prawidłowo. Obawiam się, że inne będą podobne. Po prostu naucz się poprawnie definiować stałe tak, żeby kompilator wiedział czego ma się trzymać w czasie sprawdzania ich zakresu.

      Poryjemy..zrobaczymy

      1. przeczytaj o literałach , JOTEM 30/08/07 11:35
        http://www.intercon.pl/...bx/basics/datatypes.html

        jak zobaczysz - opis nie uwzlędnia jeszcze LL, ale ogólny sens jest poprawny.
        Nie traktuj tego jak błąd kompilatora, tylko jak ZABEZPIECZENIE.

        Poryjemy..zrobaczymy

    
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL