如何在结构中的位域设置变量中设置值?

时间:2013-05-30 09:59:41

标签: qt struct bit-fields

我在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);
    }

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您的代码存在一些问题:

  1. 1位有符号整数不是很有用,它只能保存值-1和0。
  2. 你不能有一个指向位字段的指针,这不是指针的意思。
  3. 此外,%d说明符中没有任何内容告诉scanf()函数目标值是位字段(也没有任何其他%说明符可以执行此操作,请参阅2)。
  4. 解决方案是scanf()到临时变量,范围检查接收到的值,然后将其存储在位字段中。

答案 1 :(得分:1)

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