C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了有没有任何C实现有一个无用的单位`int`位域?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_772_1@
6.7.2.1p9 of n1570说:

我是否正确理解这表明结构中的单个成员{int bit:1;可能是一个标志位?

如果是这种情况,则遵循这样的位字段可能存储在某些实现上的唯一值是0和-0,其中-0可能与0存储或陷阱表示无法区分.

是否有任何实际的实现只能将一个值分配给这样的位域?

@H_616_14@解决方法
gcc 4.9.2怎么样?

/* gcc -std=c11 -pedantic-errors -Wextra -Werror=all test.c */
#include <stdio.h>
#include <String.h>

struct foo {
    int bit:1;
};

int main() {
    struct foo f;
    f.bit = 0;
    f.bit = 1;

    printf("%i\n",f.bit);
    return 0;
}

编译它会发出:

$gcc -std=c11 -pedantic-errors -Wextra -Werror=all test.c
test.c: In function ‘main’: test.c:12:10: warning: overflow in
implicit constant conversion [-Woverflow]
  f.bit = 1;
          ^

运行它发出:

$./a.out 
-1

大佬总结

以上是大佬教程为你收集整理的有没有任何C实现有一个无用的单位`int`位域?全部内容,希望文章能够帮你解决有没有任何C实现有一个无用的单位`int`位域?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。