C: Unije - pomoć oko zadatka

Teme vezane za console/GUI programiranje u C/C++ jeziku
3 post(ov)a • Stranica: 1/1.

C: Unije - pomoć oko zadatka

PostPostao/la displayerror » 27 ruj 2015, 13:21

Ne razumijem izlaz sljedećeg koda:
Kod: Označi sve
#include<stdio.h>
static int i=2;
union U
{
    int a,b;
    char c[3];
}u;
int main()
{
    u.b=0x6;
    for(;i;u.b++)
        u.b=u.a<<i--;
    printf("%d\n %o %s",u.a,u.b,u.c);
    return 0;
}


Koja je početna vrijednost promjenjive a u petlji?

Re: C: Unije - pomoć oko zadatka

PostPostao/la Jasko » 27 ruj 2015, 14:40

Ok pitanje je dali razumijes generalno sta se radi u petlji.

Pod broj jedan vrijednost u.a i u.b su identicne, to se lagano pokaze ako isprintas vrijednosti na pocetku.

pod dva b-u se dodijeli hexadecimalna vrijednost "6" tj. 0x6 sto je binarno (0000 0110)

kada se udje u petlju siftamo a koji je ista vrijednost kao i b za dva bita i dobivamo (0001 1000 = 24) i dodjeljujemo to vrijednosti u.b i povecavamo je za 1 (0001 1001)

u drugom krugu u petlji isto radimo shiftamo u.a koji ima vrijednost jednaku u.b tj 25 ali sada za jedan bit (posto smo sa i-- samnjili i) i dobivamo (0011 0010)
sada povecamo datu vrijednost za 1 i dobivamo konacnih 51

sada idemo na izdavanje rezultata, sada opet malo se igramo sa mogucnostima u.a i u.b su oboje 51 samo sto u.a izdajemo kao decimalan broj sa %d, a u.b izdajemo kao oktalni broj sa %o i dobivamo 63 u ispisu, iako je ustvari ista vrijednost binarno
na kraju izdajemo string %s sto je u varijabli u.c memorisano i gotovo

jos pitanja?
Postoji 10 vrsta ljudi na zemlji. Oni koji razumiju binarni sistem i oni koji ga ne razumiju!
Posjetite moj YouTube kanal za gledanje za programiranje i druge teme oko računara.

Re: C: Unije - pomoć oko zadatka

PostPostao/la Armin » 27 ruj 2015, 20:30

Svaka cast na detaljnom odgovoru :)
"Ne žalim što su drugi pokrali moje ideje. Žalim što nemaju svoje"
Nikola Tesla


3 post(ov)a • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.