Forum » Programiranje » Pomoč pri programiranju fe
Pomoč pri programiranju fe
gizmo666 ::
Sem študent prvega letnika na fe in bi prosil če mi lahko nekdo razloži ta vprašanja :
1) S kolikimi biti se zapiše float oziroma duble ?
a) 3
b) 4
c) 2
d) 8
2)Spremenlj. x v pomnilniku zaseda 4 pomnilniške celice. Nahaja se na naslovu 100234 in ima vrednost 200444. Kakšna je vrednost *x?
a)200444
b)100234
c)4
d)Vrednosti ne moremo dolociti
vem da če bi namesto *x imel &x bi mi vrnilo naslov, ali mi v tem primeru vrne vrednost?
Za odgovore se vam že vnaprej zahvaljujem :)
LP
1) S kolikimi biti se zapiše float oziroma duble ?
a) 3
b) 4
c) 2
d) 8
2)Spremenlj. x v pomnilniku zaseda 4 pomnilniške celice. Nahaja se na naslovu 100234 in ima vrednost 200444. Kakšna je vrednost *x?
a)200444
b)100234
c)4
d)Vrednosti ne moremo dolociti
vem da če bi namesto *x imel &x bi mi vrnilo naslov, ali mi v tem primeru vrne vrednost?
Za odgovore se vam že vnaprej zahvaljujem :)
LP
technolog ::
Predvidevam, da je jezik C. Drugič napiši, nimam kristalne krogle.
1. Noben od odgovorov. Tipično 32 bitov (float) in double 2x toliko, lahko pa je karkoli.
2. Compile-time error. Compiler prepreči, da bi naredil dereferenco tipa int. Če je to pointer (kar implicira 32 bitni sistem), potem je odgovor d).
1. Noben od odgovorov. Tipično 32 bitov (float) in double 2x toliko, lahko pa je karkoli.
2. Compile-time error. Compiler prepreči, da bi naredil dereferenco tipa int. Če je to pointer (kar implicira 32 bitni sistem), potem je odgovor d).
Zgodovina sprememb…
- spremenil: technolog ()
_Dormage_ ::
Za prvo si mislu bajte al bite?
Ker za bite nima smisla...za byte pa je odvisno od natančnosti.
Float je 4 byte in double je 8 bytov.
Ker za bite nima smisla...za byte pa je odvisno od natančnosti.
Float je 4 byte in double je 8 bytov.
MrBrdo ::
obupna vprašanja kot da bi jih nekdo napisal ki nima pojma za kaj se gre
za katerega profesorja pa gre? to so dejanska vprašanja ki jih je on dal? ga bom šel malo obiskat ob priliki
za katerega profesorja pa gre? to so dejanska vprašanja ki jih je on dal? ga bom šel malo obiskat ob priliki
MrBrdo
Zgodovina sprememb…
- spremenilo: MrBrdo ()
gizmo666 ::
Hvala za tako hitre odgovore !:)
@_dormage_
Prvo vprašanje sem pobral iz enega foruma, ki naj bi blo direkt z izpita, pa je zgleda narobe napisu .
@MrBrdo:
Ne profesor nič kriv, on je drgač ful faca :)!In drugo vprašanje je dal kod primer samo namesto *X je dal &X. mene pa je samo zanimalo kaj se zgodi v primeru če jih zamenjam :)
@_dormage_
Prvo vprašanje sem pobral iz enega foruma, ki naj bi blo direkt z izpita, pa je zgleda narobe napisu .
@MrBrdo:
Ne profesor nič kriv, on je drgač ful faca :)!In drugo vprašanje je dal kod primer samo namesto *X je dal &X. mene pa je samo zanimalo kaj se zgodi v primeru če jih zamenjam :)
Senitel ::
Dereferenciraš lahko kazalec, X ni kazalec => compiler error.
Lahko se pa potrudiš in rečeš (kids don't try this at home):
Lahko se pa potrudiš in rečeš (kids don't try this at home):
int* notSoRealPtr = (int*)X; printf("Answer to all the life problems is: %i\n", *notSoRealPtr);
Spura ::
Nikjer ne pise da x ni kazalec.
*x vrne vrednost na naslovu 200444, torej je odgovor D, ne moremo dolociti, ker ne vemo kaj je na tem naslovu.
*x vrne vrednost na naslovu 200444, torej je odgovor D, ne moremo dolociti, ker ne vemo kaj je na tem naslovu.
technolog ::
Ja, je compile error na 64 bitnem sistemu, ker ne more biti kazalec. Zagotovo. Če je to 32-bitni sitem, potem bi jaz spremenil odgovor:
d)Vrednosti ne moremo dolociti v d)Obnašanja programa ne moremo dolociti
Ker compile error pač ni vrednost. Itak sem pa jaz že vse napisal v prvem odgovoru. In isto sem se spraševal kdo je ta vprašanja sestavljal
d)Vrednosti ne moremo dolociti v d)Obnašanja programa ne moremo dolociti
Ker compile error pač ni vrednost. Itak sem pa jaz že vse napisal v prvem odgovoru. In isto sem se spraševal kdo je ta vprašanja sestavljal
MrBrdo ::
No če smo pošteni bi tudi za pointer lahko rekli da ima tudi številsko vrednost, čeprav če banaliziraš potem lahko za vsako spremenljivko to rečeš. Če je bilo originalno &x potem gre za dokaj smiselno vprašanje, za *x pa je preveč nejasno, čeprav bi bil po logičnem sklepanju ne glede na interpretacijo potem odgovor d). Za &x pa seveda b). Se pa strinjam da bi potem d moral malo spremenit tako kot je technolog napisal, ker ne vemo če se kaj nahaja na tistem naslovu, tako da lahko pride do access violation oz. segfault.
MrBrdo
Zgodovina sprememb…
- spremenilo: MrBrdo ()
smoke ::
smoke ::
V gizmotovem primeru je spremenljivka x ENAKA naslovu 100234, in ta naslov drži vrednost 200444, torej *100234 = 200444. Kaj tebi ni jasno?
technolog ::
Dej pejd spat mi s takimi.
&x==100234 //nahaja se na naslovu 100234
x==200444 //in ima vrednost 200444
*x==?????? //kolikšna je vrednost *x
Sedi, cvek
&x==100234 //nahaja se na naslovu 100234
x==200444 //in ima vrednost 200444
*x==?????? //kolikšna je vrednost *x
Sedi, cvek
Zgodovina sprememb…
- spremenil: technolog ()
smoke ::
Ti bom razložo z assembly vidika. Imamo spremenljivko x ki je naslov 100234 (torej je x = 100234, ne vrednost x ampak x sam) Kaj dobimo če rečemo *100234? Ti bom pomagal z assembly kodo.
Kakšno vrednost ima register EAX? Preštudiraj, pa mi povej
EDIT: Vsak naslov kot tak, je že kazalec, in sicer, na vrednost, ki jo drži.
x db 200444 mov eax, x mov eax, [eax]
Kakšno vrednost ima register EAX? Preštudiraj, pa mi povej
EDIT: Vsak naslov kot tak, je že kazalec, in sicer, na vrednost, ki jo drži.
Zgodovina sprememb…
- spremenil: smoke ()
IceBoX ::
Imamo spremenljivko x ki je naslov 100234 (torej je x = 100234, ne vrednost x ampak x sam)
Ne, preberi še enkrat.
Spremenlj. x v pomnilniku zaseda 4 pomnilniške celice. Nahaja se na naslovu 100234 in ima vrednost 200444
&x=100234
x=200444
Kaj pa je na naslovu 200444 pa ne vemo
Huh...
technolog ::
Ja, saj ni čudno, da imamo tako bugast softver, če si pa ljudje na takle način po svoje tolmačijo navodila.
hexor ::
1.)float(enojna natančnost 4 byte) double(dvojna natančnost 8 byte)
2.)dereferenčni operator(prikaže vrednost na določeni pom. lokaciji)
2.)dereferenčni operator(prikaže vrednost na določeni pom. lokaciji)
RootMachine ;)
smoke ::
IceBox, to je že res. Ampak nikjer ne piše da je spremenljivka pointer. Res je da če ni pointer kompiler tega niti ne skompajla ampak to je pa drug problem. Načeloma je pa tak, da je vsak naslov pointer, ki kaže na dejanske podatke ki so v pomnilniku. V tem primeru pa x kaže na 200444.
MrBrdo ::
ojoj smoke, ne delaj si sramote... preden se delas se vecjega ... z dokazovanjem svojega (ne)znanja assemblerja, drugič raje probaj kaj si sploh naredil, zatakne se ti namreč že v prvi vrstici ko v polje BYTE vrednosti daš število, ki zelo očitno ne paše v BYTE. pa še dvopičje si pozabil. v glavnem, nimaš pojma.
navodila naloge si pa tudi popolnoma napačno interpretiral. to kar govoriš da je vsak naslov pointer je pa tudi neumnost brez kakšne osnove. recimo v C naslov postane pointer šele ko obstaja informacija o tipu, dokler te informacije ni, naslov ni pointer saj ga ni mogoče dereferencirat. torej pointer je naslov + informacija o tipu, če že kaj. pravzaprav koncept naslova kot nekega podatkovnega tipa v programiranju sploh ne obstaja, tako da je tvoja izjava tako ali tako mimo.
navodila naloge si pa tudi popolnoma napačno interpretiral. to kar govoriš da je vsak naslov pointer je pa tudi neumnost brez kakšne osnove. recimo v C naslov postane pointer šele ko obstaja informacija o tipu, dokler te informacije ni, naslov ni pointer saj ga ni mogoče dereferencirat. torej pointer je naslov + informacija o tipu, če že kaj. pravzaprav koncept naslova kot nekega podatkovnega tipa v programiranju sploh ne obstaja, tako da je tvoja izjava tako ali tako mimo.
MrBrdo
Zgodovina sprememb…
- spremenilo: MrBrdo ()
Mavrik ::
Fantje... glede na to da se je avtor teme očitno zmoto pri prepisovanju prve naloge, a ne bi raje pomislili če je naredil podobno napako tudi pri drugi medtem ko pametujete? ;)
The truth is rarely pure and never simple.
smoke ::
MrBrdo, you got me. Zatipkal sem se pri eni črki in sicer db, bi moral bit dd, my bad, pisal sem z glave. Nevem pa o kterem dvopičju ti govoriš (no, ampak tak nimam pojma). Bom ti napisal celotno kodo in si jo skompajlaj v flat assemblerju in naloži v debugger.
Ko boš to naredil, mi povej kakšno vrednost ma EAX.
format PE GUI 4.0 include 'win32a.inc' section '.text' code readable executable entry $ mov eax, x mov eax, [eax] section '.rwdata' data readable writable x dd 200444d
Ko boš to naredil, mi povej kakšno vrednost ma EAX.
MrBrdo ::
sej ni noben rekel, da eax ni 200444, ampak to nima nobene veze z vprašanjem, ker si slabo navodila prebral. torej, dokazuješ stvar, ki ni pomembna glede na vprašanje. pa bravo da si vsaj stestiral zdaj to kar si napisal, verjamem da deluje. kar se pa dvopičja tiče, ponavadi se označi takšne spremenljivke z labeli, dd pa je potem samo ukaz ki v pomnilnik nekaj zapiše. tako kot je tukaj napisano v primeru http://www.keil.com/support/man/docs/aa... Morda pa je na IA32 oz. pri tvojem assemblerju brez dvopičja.
MrBrdo
smoke ::
MrBrdo, ukaz dd ne obstaja v x86 (tisti moj dd kvečjemu pomeni "define doubleword", ki ni ukaz in je specifičen za flat assembler), sicer pa probaj, mogoče ti ga rata kot ukaz zagnat na x86 . Svetujem ti, da si še prebereš malo več o x86 arhitekturi (Intel ma super knjige na to temo, pravtako AMD) in o windowsovem PE formatu exejev in mi nato pametuješ.
Dejstvo pa je, da če bi C kompajler skompajlal kodo kjer derefenciraš spremenljivko, ki ni pointer bi dobil točno to kar sem napisal.
Veselim se pogovora s tabo, ko boš mel malo več pojma . Lahko noč.
Dejstvo pa je, da če bi C kompajler skompajlal kodo kjer derefenciraš spremenljivko, ki ni pointer bi dobil točno to kar sem napisal.
Veselim se pogovora s tabo, ko boš mel malo več pojma . Lahko noč.
MrBrdo ::
Seveda je ukaz, in sicer ukaz za zbirnik (program). Bolj natančno gre za psevdo-ukaz. Verjetno si malo pomešal pojme, si mislil opcode?
Mislim da ne rabim komentirat.
derefenciraš spremenljivko, ki ni pointer
Mislim da ne rabim komentirat.
MrBrdo
Zgodovina sprememb…
- spremenilo: MrBrdo ()
CleanPower ::
yo, js pa da ne odpiram nove teme, bom kr tle prašu kako je z učnim gradivom/knjigami na UNI Elektrotehniki v Lj, je treba kakšne knjige kupit, al se da vse v knjižnjici dobit? Hvala, Lp
Celsius - če hodlaš $400 za 30dni, dobiš 50$ nagrade
https://celsiusnetwork.app.link/1453486815
https://celsiusnetwork.app.link/1453486815
ducttape ::
Bolj ali manj se vse dobi v knjižnici, samo pravi čas si izposodi. Kar je obveznega za kupit v 1. letniku sta dve skripti za lab vaje od OE (~4 EUR vsaka), čeprav nekateri asistenti tolerirajo tudi skopirane.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] array v voiduOddelek: Programiranje | 2268 (1967) | Spura |
» | C in funkcije ter #defineOddelek: Programiranje | 3932 (2293) | misek |
» | [C] struct in int[] (strani: 1 2 )Oddelek: Programiranje | 7306 (6379) | MrBrdo |
» | [C/C++] pointerji in referenceOddelek: Programiranje | 2012 (1836) | Matako |
» | Pomoč pri Turbo Pascalu. Nujno!Oddelek: Programiranje | 1160 (893) | Gundolf |