2013-05-30 58 views
0

我已经在Qt中编写了下面的代码,当我将值放入它时,它会停止工作。如何设置结构中位域设置变量的值?

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

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

回答

1

由于C/C++标准不允许通过指针访问位域的成员,并且必须传递scanf指针。

+0

那么我应该用什么来代替scanf –

+0

要将变量读入ac位域我认为您必须将其保存在一个临时变量中,您可以获取一个指针并将其复制到位域(并检查值对它有效 – urzeit

+0

thanx它的工作 –

1

有你的代码的几个问题:

  1. 的1位的有符号整数并不是非常有用,它只能保存的值-1和0
  2. 你不能有一个指向位字段的指针,这不是指针的意思。
  3. 此外,%d说明符中没有任何内容告诉scanf()函数目标值是位域(也没有任何其他%说明符可以执行此操作,请参见2)。

解决的办法是将scanf()转换为临时变量,范围检查收到的值,然后将其存储在位域中。

+0

补充说明:一个指向位域成员的指针根本不可能完成,因为指针保存的是字节地址,位域成员可能有“小数字节”地址。 – urzeit