0

Qt で以下のコードを作成しました。値を入力すると、program.exe が動作しなくなります。

struct aim
{
   int i : 1;
   int j : 1;
};

    int main()
    {
       aim missed;
       printf("Enter value of i :: ");
       scanf("%u",missed.i);

       printf("Enter value of j :: ");
       scanf("%u",missed.j);
    }

誰でもこの問題で私を助けることができますか?

4

2 に答える 2

2

コードにはいくつかの問題があります。

  1. 1 ビットの符号付き整数はあまり役に立ちません。-1 と 0 の値しか保持できません。
  2. ビットフィールドへのポインターを持つことはできません。それはポインターの意味ではありません。
  3. また、指定子には、ターゲット値がビット フィールドであることを関数に%d伝えるものは何もありません (これを実行できる他の指定子もありません。2 を参照してください)。scanf()%

解決策はscanf()、一時変数を使用して、受信した値の範囲をチェックし、それをビット フィールドに格納することです。

于 2013-05-30T10:05:52.087 に答える
1

C/C++ 標準では、ポインターを介してビットフィールドのメンバーにアクセスすることは許可されておらず、scanf にポインターを渡す必要があるためです。

于 2013-05-30T10:03:39.407 に答える