1、结构体中的冒号作用
下列程序输出结果多少?
#include <stdio.h>
#include <string.h>
typedef struct{
int a:2;
int b:2;
int c:1;
}test;
int main(){
test t;
t.a=1;
t.b=3;
t.c=1;
printf("%d\n%d\n%d\n",t.a,t.b,t.c);
return 0;
}结果:
1
-1
-1
分析:
int a:2表示a占2位,即二进制a=01,因此输出1
b占两位,b=11,但是由于是%d输出,所以先将b转化成32位int型,由于最高位是1,所以默认其为负数,所以扩展为11111111 11111111 11111111 11111111
即-1,c类似
本文通过一个C语言示例程序介绍了结构体中冒号的作用,即定义成员占用的比特位数。并通过运行示例解释了如何理解输出结果,特别针对%d输出格式下数值的表现形式。

4049

被折叠的 条评论
为什么被折叠?



