Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何在结构中设置位字段中的值设置变量?_Qt_Struct_Bit Fields - Fatal编程技术网

Qt 如何在结构中设置位字段中的值设置变量?

Qt 如何在结构中设置位字段中的值设置变量?,qt,struct,bit-fields,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",

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

有人能帮我解决这个问题吗?

因为C/C++标准不允许通过指针访问位字段的成员,而您必须向scanf传递指针。

因为C/C++标准不允许通过指针访问位字段的成员,而您必须向scanf传递指针。

有几个问题使用您的代码:

  • 1位有符号整数不是很有用,它只能保存值-1和0
  • 不能有指向位字段的指针,这不是指针的意思
  • 另外,
    %d
    说明符中没有任何内容告诉
    scanf()
    函数目标值是位字段(也没有任何其他
    %
    说明符可以这样做,请参见2)

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

    您的代码存在一些问题:

  • 1位有符号整数不是很有用,它只能保存值-1和0
  • 不能有指向位字段的指针,这不是指针的意思
  • 另外,
    %d
    说明符中没有任何内容告诉
    scanf()
    函数目标值是位字段(也没有任何其他
    %
    说明符可以这样做,请参见2)

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

    那么我应该使用什么来代替scanf将变量读取到c位字段中呢?我想您必须将其保存在一个临时变量中,您可以获得一个指针,然后将其复制到位字段中(并检查该值是否有效)那么我应该使用什么来代替Scanft将变量读入c位字段我认为您必须将其保存在一个临时变量中您可以获得一个指针,然后将其复制到位字段(并检查该值是否对其有效)附加说明:一个指针这样一个位域成员根本不可能,因为指针持有字节地址,而位域成员可能拥有“分数字节”地址。附加说明:一个指针这样一个位域成员根本不可能,因为指针持有字节地址,而位域成员可能拥有字节地址“分数字节”地址。