wah*_*dul 1 c struct bit-fields
我在使用结构的C中遇到了这个问题.我不确定这里到底发生了什么.谢谢
#include<stdio.h>
int main()
{
struct num1
{
int n1:2;
int n2:3;
int n3:4;
};
struct num1 num={3,4,5};
printf("%d %d %d\n",num.n1,num.n2,num.n3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
获得的输出是
-1 -4 5
这些是位字段,后面的数字:指定该成员中有多少位.
int n1:2
Run Code Online (Sandbox Code Playgroud)
表示带有2位的有符号整数.在二进制补码,这使得从价值观-2到1; 符号+级符号它允许-1对1.当您尝试分配3给此成员时,会出现溢出,从而导致未定义的行为.
同样
int n2:3
Run Code Online (Sandbox Code Playgroud)
是指具有3个比特的signied整数,其范围是-4,以3在二的补码,-3以3在符号+大小,所以分配4原因溢出.
int n3:4
Run Code Online (Sandbox Code Playgroud)
具有介于-8至7或-7至7,所以分配5适合它,所以没有溢出.
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |