Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Sizeof(); expression must have a...

Skapad av Borttagen, 2010-07-26 23:17 i Webbutveckling & Programmering

920
11 inlägg
0 poäng
Lll
Visningsbild
-1322 Hjälte 534 inlägg
0
Hellu, kodade lite och fick en error när jag försökte att kompilera:

int atob(int digit, int ab)
{
int iLittleEnd[sizeof(digit)];

for(int i=0;i<sizeof(digit);i++)
{
iLittleEnd[i] = digit[sizeof(digit)-i]; <----- där är errorn
}
return iLittleEnd;
}

sizeof, error: expression must have pointer-to-object type

Plees halps!

Go ahead, make my day

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Klas-Kenny
Visningsbild
P 31 Växjö Hjälte 12 128 inlägg
0
För det första, vilket språk?

Rätt verktyg till rätt arbete - Makaroner äts med sked.

Lll
Visningsbild
-1322 Hjälte 534 inlägg
Trådskapare
0
Svar till Klas-Kenny [Gå till post]:

Ops, så förhastad att jag glömde att skriva det, det är C++ =)


Nå?

Go ahead, make my day

wally
Visningsbild
P 34 Stockholm Hjälte 1 980 inlägg
0

Svar till Lll [Gå till post]:

sizeof(&digit)?

Google <3 | Vinnare av parlinotomte här på hamsterpaj!

Lll
Visningsbild
-1322 Hjälte 534 inlägg
Trådskapare
0

Svar till wally [Gå till post]:

nope :

Go ahead, make my day

gaminggirl
Visningsbild
F 38 Lund Hjälte 8 084 inlägg
0
Svar till Lll [Gå till post]:
iLittleEnd är en lista, inte ett objekt så den kan inte tilldelas ett objekt utan en pekare till ett objekt.

iLittleEnd = &(digit[sizeof(digit)-i]);

eventuellt

iLittleEnd[plats i listan] = digit[sizeof(digit)-i];


Kan tillägga att digit inte är en lista så du får nog tänka igenom den raden ordentligt ett varv till. Tänk efetr vad det är du vill göra med den och tänk efter vad det är du gör just nu.

Ingen status

Lll
Visningsbild
-1322 Hjälte 534 inlägg
Trådskapare
0

Svar till gaminggirl [Gå till post]:

Jag tror att följande ska fungera, och göra så att iLittleEnd[0] innehåller 7 och att iLittleEnd[1] innehåller 3:

for(int i=0;i<sizeof(digit)-2;i++) //digit=37
{
iLittleEnd[i] = digit[sizeof(digit)-i];
}

Men det gör det inte, och jag vill ha det i en array. Och iLittleEnd[plats i listan] = digit[sizeof(digit)-i]; är vad jag gör :s

Go ahead, make my day

gaminggirl
Visningsbild
F 38 Lund Hjälte 8 084 inlägg
0
Svar till Lll [Gå till post]:
nej, du försöker ge iLittleEnd värdet på plats sizeof(digit)-i i listan digit om du skriver som du gör nu.

Du kan inte dela upp en int i delar på det viset, om du vill dela den får du använda modulo (%) och rest. http://www.cprogramming.com/tutorial/modulus.html om du vill läsa mer om hur det fungerar.

Det du tänker att du vill göra är
iLittleEnd[0] = digit % 10;
iLittleEnd[1] = digit - iLittleEnd[0] / 10;

om du vill ha det för ett tal av obestämd storlek så är det lättast att göra såhär:

int val = 0;
while(digit > 0)
{
int temp = digit % 10; //räkna ut resten
iLittleEnd[val] = temp; //lägg in på rätt plats i listan
digit = digit - temp; //dra bort resten
digit = digit / 10; //ta bort den sista nollan
val++; //gå till nästa i iLittleEnd
}

Åtminstone är det det jag tolkar att du vill göra. först i listan kommer sista siffran i talet, på plats 2 nästa osv.


Ingen status

Lll
Visningsbild
-1322 Hjälte 534 inlägg
Trådskapare
0

Svar till gaminggirl [Gå till post]:

Tack så mycket ännu en gång! ^.^

Go ahead, make my day

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till Lll [Gå till post]:
Är det så att du egentligen vill göra om en int i big-endian till little-endian?
Till att börja med finns det befintliga biblioteksfunktioner för det, men om du prompt vill göra det själv så skulle jag föreslå följande: (ignorera att det står C#, hamsterpaj är buggigt...)
Ett stycke C#-kod:
int atob(int val)
{
int res;
char* from = (char*) &val;
char* to = (char*) &res;
for (int i = 0, j = sizeof(int) - 1; i < sizeof(int); i++, j++)
to[j] = from[i ];
return res;
}


Vad du skulle ha ab till framgår inte riktigt, du använder den ju inte iaf.

Notera att det inte är snyggt att göra så här, men eftersom man ska gräva i datarepresentationen så blir det inte snyggt hur man än gör.
Lll
Visningsbild
-1322 Hjälte 534 inlägg
Trådskapare
0

Svar till cower [Gå till post]:

Tack, hade löst det innan med samma forloop! =)

ab var en parameter om den skulle konvertera binary till dec eller vice versa, men jag tog bort den och gjorde en annan funktion istället.

Go ahead, make my day


Forum » Datorer & IT » Webbutveckling & Programmering » Sizeof(); expression must have a...

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

2 utloggade

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons