abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 0
    dnes 18:33 | IT novinky

    Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.

    Ladislav Hagara | Komentářů: 0
    dnes 17:11 | Nová verze

    Richard Biener oznámil vydání verze 14.1 (14.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 14. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.

    Ladislav Hagara | Komentářů: 0
    dnes 13:44 | Komunita

    Free Software Foundation zveřejnila ocenění Free Software Awards za rok 2023. Vybráni byli Bruno Haible za dlouhodobé příspěvky a správu knihovny Gnulib, nováček Nick Logozzo za front-end Parabolic pro yt-dlp a tým Mission logiciels libres francouzského státu za nasazování svobodného softwaru do praxe.

    Fluttershy, yay! | Komentářů: 0
    dnes 13:11 | IT novinky

    Před 10 lety Microsoft dokončil akvizici divize mobilních telefonů společnosti Nokia a pod značkou Microsoft Mobile ji zanedlouho pohřbil.

    Ladislav Hagara | Komentářů: 1
    včera 21:33 | Komunita

    Fedora 40 release party v Praze proběhne v pátek 17. května od 18:30 v prostorách společnosti Etnetera Core na adrese Jankovcova 1037/49, Praha 7. Součástí bude program kratších přednášek o novinkách ve Fedoře.

    Ladislav Hagara | Komentářů: 5
    včera 21:11 | IT novinky

    Stack Overflow se dohodl s OpenAI o zpřístupnění obsahu Stack Overflow pro vylepšení OpenAI AI modelů.

    Ladislav Hagara | Komentářů: 1
    včera 17:55 | Nová verze

    AlmaLinux byl vydán v nové stabilní verzi 9.4 (Mastodon, 𝕏). S kódovým názvem Seafoam Ocelot. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 17:11 | IT novinky

    Před 50 lety, 5. května 1974 v žurnálu IEEE Transactions on Communications, Vint Cerf a Bob Kahn popsali protokol TCP (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Zajímavý článek

    Bylo vydáno do češtiny přeložené číslo 717 týdeníku WeeklyOSM přinášející zprávy ze světa OpenStreetMap.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (63%)
     (8%)
     (14%)
     (16%)
    Celkem 132 hlasů
     Komentářů: 8, poslední 4.5. 08:25
    Rozcestník

    Dotaz: int vs unsigned int, c vs c++ -> vraci jine hodnoty

    6.8.2011 02:15 sparrowhawk | skóre: 6
    int vs unsigned int, c vs c++ -> vraci jine hodnoty
    Přečteno: 347×

    dobry den,

    mohl by mi nekdo vysvetlit, proc u obou techto kodu je vysledek pokazde jiny? v pripade C je v promenne "c" ulozeno take cislo 2, ktere by tam ale byt nemelo, ze?
    v pripade C++ je v "c" ulozeno cislo, ktere je rovne maximalni hodnote int zkracene o prave zadane cislo vzdy o jednu mensi

     

    kod C

    #include <stdio.h>
    int main()
    {
    int a;
    signed int b;
    unsigned int c;
    printf("Enter a");
    scanf("%d", &a);
    printf("int=%d",a);
    printf("Enter b");
    scanf("%d", &b);
    printf(" signed=%d",b);
    printf("Enter c");
    scanf("%d", &c);
    printf(" unsigned=%d",c);
    return 0;
    }
    


    kod C++

    #include <iostream>
    using namespace std;
    int main(void)
    int a;
    signed int b;
    unsigned int c;
    cout << "Enter number a: ";
    cin >> a;
    cout << "Enter number b: ";
    cin >> b;
    cout << "Enter number c: ";
    cin >> c;
    cout << "int = "<< a << ", signed int = " << b << ", unsigned int = "<< c << endl;
    }
    

    predem dekuji za jakekoli reakce


    Řešení dotazu:


    Odpovědi

    6.8.2011 05:14 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: int vs unsigned int, c vs c++ -> vraci jine hodnoty
    Přílohy:
    Nějak to nechápu kde je ten rozdíl ? Mě to vypisuje stejné hodnoty ...
    [petr@nt ~]$ ./pokus.bin
    Enter a 2
     int=2
    Enter b 2
     signed=2
    Enter c 2
     unsigned=2
    [petr@nt ~]$ ./pokus.bin
    Enter a 1
     int=1
    Enter b 1
     signed=1
    Enter c 1
     unsigned=1
    [petr@nt ~]$ ./pokus.bin
    Enter a 100
     int=100
    Enter b 100
     signed=100
    Enter c 100
     unsigned=100
    
    [petr@nt ~]$ ./pokus_cpp.bin
    Enter number a: 2
    Enter number b: 2
    Enter number c: 2
    int = 2, signed int = 2, unsigned int = 2
    [petr@nt ~]$ ./pokus_cpp.bin
    Enter number a: 1
    Enter number b: 1
    Enter number c: 1
    int = 1, signed int = 1, unsigned int = 1
    [petr@nt ~]$ ./pokus_cpp.bin
    Enter number a: 100
    Enter number b: 100
    Enter number c: 100
    int = 100, signed int = 100, unsigned int = 100
    
    6.8.2011 11:56 sparrowhawk | skóre: 6
    Rozbalit Rozbalit vše Re: int vs unsigned int, c vs c++ -> vraci jine hodnoty
    jsem vul, v dotazu jsem spatne uvedl, ze pri zadani zaporneho cisla, napr. "-2" ....... nicmene, nize uz mi bylo vse vysvetleno. jedna se %d vs %u. toto problem vyresilo

    vsem dekuji za odpovedi
    6.8.2011 12:00 sparrowhawk | skóre: 6
    Rozbalit Rozbalit vše Re: int vs unsigned int, c vs c++ -> vraci jine hodnoty
    nicmene mam k tomuto jeste jeden dotaz. podle vseho se zda, a ted me opravte, nebo mi to potvrdte, ze v pripade C je kazdy typ by default unsigned a v pripade C++ je kazdy typ by default signed. je to tak?
    6.8.2011 12:45 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: int vs unsigned int, c vs c++ -> vraci jine hodnoty
    Ne. Proč si to myslíte? U int, long i long long je default signed. Jen v případě char je to složitější a závisí to na dalších okolnostech.
    6.8.2011 12:50 sparrowhawk | skóre: 6
    Rozbalit Rozbalit vše Re: int vs unsigned int, c vs c++ -> vraci jine hodnoty
    jo, mate pravdu. moje i chyba pri oprave zdrojoveho kodu. jsem s %d nahradil za %u i u samotneho int. dekuji, uz je to jasne a uz vim
    Řešení 1× (sparrowhawk (tazatel))
    6.8.2011 05:31 Sten
    Rozbalit Rozbalit vše Re: int vs unsigned int, c vs c++ -> vraci jine hodnoty
    Tipuju problém v tom, že ve formátovacích funkcích zaměňujete signed a unsigned:
    scanf("%u", &c);
    printf(" unsigned=%u",c);
    Řešení 1× (sparrowhawk (tazatel))
    6.8.2011 10:55 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: int vs unsigned int, c vs c++ -> vraci jine hodnoty

    To má být nějaký kvíz "uhodněte, jak měl znít dotaz"? Za prvé: druhá ukázka nejde přeložit, protože vám tam chybí otevírací levá složená závorka funkce main(). Za druhé: neuvádíte, na jaké platformě a jakým překladačem jste to překládal. Za třetí (a nejhorší): neobtěžoval jste se ani napsat, s jakým vstupem jste to vlastně testoval. Za čtvrté: tvrdíte, že v proměnné c je u první ukázky hodnota 2; jak jste na to přišel, když vypisujete něco jiného, než její obsah?

    Můj tip je, že jste zadával hodnotu -2, první program vám vypsal třikrát -2 (ne 2, jak tvrdíte) a druhý dvakrát -2 a potřetí něco jako 2^{32}-2. Vysvětlení je takové, že v prvním programu konvertujete zadanou hodnotu (při vstupu) na unsigned int a pak zase zpátky na int (při volání printf()). Ve druhém provedete konverzi jen jednou (při zpracování vstupu), u výstupu se použije správná verze operátoru << podle typu proměnné. Pokud byste v prvním programu použil u posledního printf() správný formát %u, dopadlo by to stejně.

    6.8.2011 12:29 sparrowhawk | skóre: 6
    Rozbalit Rozbalit vše Re: int vs unsigned int, c vs c++ -> vraci jine hodnoty
    ano, omlouvam se, popsal jsem to spatne. vas tip byl ovsem spravny :) a resenim, jako u vyse uvedeneho komentare, byla chyba v pouziti %d namisto %u

    dekuji

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.