-6

誰かが次のデータをCで印刷するのを手伝ってくれませんか、正確なフォーマット指定子と印刷手順。

            union
            {
                            char       c[8];
                            short     s[4];
                            long       l[2];
                            void *    vfp[2];
            } info;

printf("%s\n", info.c); を使用しようとすると および printf("%s\n",info.s)。ガベージ値を取得しました。また、これらのポインターを印刷する際に助けが必要です。ご支援ありがとうございます。

4

2 に答える 2

4

unionの使用法セマンティクスを理解する必要があります。ユニオンの特定のオブジェクト インスタンス内に格納したのみを読み取ることができます。また、特定のインスタンスでユニオンに格納できる型は 1 つだけです。
したがって、保存したsc、両方にすることはできません。両方のタイプを格納することが意図されている場合、必要なのは構造体であり、共用体ではありません。

于 2013-04-22T15:04:24.593 に答える
1

まず、 union を使用しています。メモリはこれら 4 つのアレイ間で共有されます。あなたがそれを望んでいるかどうかはわかりません。

次に、フォーマット指定子のリストはこちらです。 %s文字列用です。 %pはポインター%ld用であり、signed long に使用できます。

于 2013-04-22T15:06:37.747 に答える