problem mit ?: oder grippe
-
hola
kurzer code:
const unsigned int INTSIZE = sizeof(int); const unsigned int INTSIZEMASK = ~(INTSIZE - 1); inline unsigned int AlignSize(unsigned int t_value) { return (t_value & INTSIZE) ? (t_value & INTSIZEMASK) + INTSIZE : t_value; // (1) }
wenn ich der obrigen funktion irgendeinen wert uebergebe, 13,51,91 usw., dann gibt er mir ueber(1) immer den uebergebenen wert zurueck. also immer der else-zweig. ich steh total daneben und seh den fehler nicht.
wo liegt er ?Meep Meep
-
#include<iostream> using namespace std; const unsigned int INTSIZE = sizeof(int); const unsigned int INTSIZEMASK = ~(INTSIZE - 1); inline unsigned int AlignSize(unsigned int t_value) { return (t_value & INTSIZE) ? (t_value & INTSIZEMASK) + INTSIZE : t_value; // (1) } int main () { for(int i=0;i<20;++i) cout<<i<<' '<<AlignSize(i)<<endl; }
gibt bei mir aber
0 0 1 1 2 2 3 3 4 8 5 8 6 8 7 8 8 8 9 9 10 10 11 11 12 16 13 16 14 16 15 16 16 16 17 17 18 18 19 19
aus.
es macht also was und geht nicht immer über (1).
aber deinen code verstehe ich eh nicht. ich mach's mal neu.
inline unsigned int AlignSize(unsigned int t_value) { return (t_value+sizeof(int)-1)&(~(sizeof(int)-1)); }
ergibt
0 0 1 4 2 4 3 4 4 4 5 8 6 8 7 8 8 8 9 12 10 12 11 12 12 12 13 16 14 16 15 16 16 16 17 20 18 20 19 20
-
danke, fuer den denkanstoss. jetz hab ich meine fehler auch gesehen.
wald und baeume und so. wird echt immer schlimmer. ich glaub ich fang zum bingo spielen an.Meep Meep