2

私はいくつかの固定小数点ベクトル計算をしようとしていますが、何かを印刷するたびに、何の問題もないようです。ベクトルの値が変わります。コードは、Zilog の ZDSII 開発者スタジオを使用してコンパイルされています。

私はそのように定義された構造体を持っています

typedef struct {
    long x;
    long y;
} vector;

構造体内の値は関数で初期化されます

void initVector( vector * vec, int x, int y ) {
    vec -> x = (long) x << 14;
    vec -> y = (long) y << 14;
}

私の主な機能では、

int main() {
    vector * vector1;

    initVector( vector1, 1, 2 );
    printf( "foo" ); // this prints alright
    printf( "%d , %d", vector1 -> x >> 14, vector1 -> y >> 14 ); //garbage
    ...

    ...
}

ガベージを印刷します。値は、実際に値を出力する printf の前の printf ステートメントの数に応じて変化します。

4

3 に答える 3

1

にメモリを割り当てますvector1。次に例を示します。

int main()
{
    vector vector1;

    initVector( &vector1, 1, 2 );
    printf( "%d , %d", vector1.x >> 14, vector1.y >> 14 ); //no garbage :-)
}
于 2013-06-12T11:28:09.173 に答える