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说明符中没有任何内容告诉scanf()函数目标值是位字段(也没有任何其他%说明符可以做到这一点,请参见 2)。

解决方案是到scanf()一个临时变量,范围检查接收到的值,然后将其存储在位字段中。

于 2013-05-30T10:05:52.087 回答
1

因为 C/C++ 标准不允许通过指针访问位域的成员,所以您必须通过 scanf 指针。

于 2013-05-30T10:03:39.407 回答