J
Jos Brink
Guest
Ok, jeg havde en fejl i mit program.have et kig på denne lille kode:
(
unsigned char i, j, * ptr1, * ptr2, temp, x_max, y_max;
unsigned char row_index;
unsigned int row_offset, bitmap_offset;
row_offset = x_max * row_index;
)
i dette tilfælde x_max = 122, og row_index varierer fra 0-3.
i løbet af denne gange, row_offset fik forkerte værdier.Ved at ændre row_index til en unsigned int, var problemet overstået.
Kan nogen forklare, hvorfor row_index skal være en int i stedet for en char, og x_max ikke?
Thnx.BTW: Jeg bruger codevisionLagt efter 20 minutter:OK, jeg skrev en lille test program til at finde ud af, hvad der sker.
unsigned int k, z;
unsigned char i, j, x, y;
(
x = 122;
i = 122;
for (y = 0; y <8; y )
(
z = x * y;
putchar (z>> 8);
putchar (z & 0x00FF);
)
/ / Output var: 0000, 007A, 00F4, 006E, 00E8, 0062, 00DC, 0056
z = 122;
for (j = 0; j <8; j )
(
k = z * j;
putchar (k>> 8);
putchar (k & 0x00FF);
)
)
/ / Output var: 0000, 007A, 00F4, 016E, 01E8, 0262, 02DC, 0356Det lader til, at en af de to variabler skal være en int, er det ligegyldigt hvilken.
Er compiler bruge variabler også til midlertidig oplagring?
(
unsigned char i, j, * ptr1, * ptr2, temp, x_max, y_max;
unsigned char row_index;
unsigned int row_offset, bitmap_offset;
row_offset = x_max * row_index;
)
i dette tilfælde x_max = 122, og row_index varierer fra 0-3.
i løbet af denne gange, row_offset fik forkerte værdier.Ved at ændre row_index til en unsigned int, var problemet overstået.
Kan nogen forklare, hvorfor row_index skal være en int i stedet for en char, og x_max ikke?
Thnx.BTW: Jeg bruger codevisionLagt efter 20 minutter:OK, jeg skrev en lille test program til at finde ud af, hvad der sker.
unsigned int k, z;
unsigned char i, j, x, y;
(
x = 122;
i = 122;
for (y = 0; y <8; y )
(
z = x * y;
putchar (z>> 8);
putchar (z & 0x00FF);
)
/ / Output var: 0000, 007A, 00F4, 006E, 00E8, 0062, 00DC, 0056
z = 122;
for (j = 0; j <8; j )
(
k = z * j;
putchar (k>> 8);
putchar (k & 0x00FF);
)
)
/ / Output var: 0000, 007A, 00F4, 016E, 01E8, 0262, 02DC, 0356Det lader til, at en af de to variabler skal være en int, er det ligegyldigt hvilken.
Er compiler bruge variabler også til midlertidig oplagring?