
9个回答
展开全部
在C语言中,并没有bool类型,如果出现bool类型,那么就是自定义类型,根据定义方式,可能占用不同空间,可以通过输出sizeof(bool)的方式确定。
在C++中是存在bool系统类型的,同样可以通过输出sizeof(bool)的方式,来确定其占用字节数。在C++中,sizeof(bool)的值为1,所以该类型是占用1字节的。
之所以不实现为一位,是因为计算机存取的最小空间是按字节计算的,在独立的单个bool型变量下,只占一位空间并没有实际意义。
当出现一组bool类型时,通过结构体的位域概念,可以实现单独占用一位。
如
struct TEST
{
bool a:1;
bool b:1;
bool c:1;
bool d:1;
bool e:1;
bool f:1;
bool g:1;
bool h:1;
};
在这个例子中,定义了8个bool型成员在一个结构体TEST中,成员变量名后的:1代表该成员仅占用1位,这样整个结构体共占用一个字节。
使用位域定义时,bool变量的赋值,引用等操作,与普通bool变量并没有区别,但成员变量不支持取地址操作,这是因为,地址的单位同样是字节,对于位为单位的成员,取字节为单位的地址是没有意义的。于是C/C++在编译的时候就禁止了该操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果您使用的是vc
对bool的定义是
typedef int BOOL;
可见是占四个字节
为什么要这样呢
int型变量所占的空间永远是与操作系统有关的,在32位的操作系统中int型占4个字节,所以CPU在执行指令时从内存中取数据也是一次最少取4个字节,如果BOOL占一个字节的话,CPU就要先取4个字节,再用“与”运算与掉三个字节,这样效率就低了
您要是想控制一位 没有对应的数据类型 一般通过位运算和位操作来完成
对bool的定义是
typedef int BOOL;
可见是占四个字节
为什么要这样呢
int型变量所占的空间永远是与操作系统有关的,在32位的操作系统中int型占4个字节,所以CPU在执行指令时从内存中取数据也是一次最少取4个字节,如果BOOL占一个字节的话,CPU就要先取4个字节,再用“与”运算与掉三个字节,这样效率就低了
您要是想控制一位 没有对应的数据类型 一般通过位运算和位操作来完成
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-08-14
展开全部
c中bool占一个字节,如果想只占用一位,可以参考:
typedef struct abc
{
bool m_a :1;
bool m_b :1;
}ABC;
在这个struct种,两个bool成员各只占用1bit。
typedef struct abc
{
bool m_a :1;
bool m_b :1;
}ABC;
在这个struct种,两个bool成员各只占用1bit。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言最小的占用单位就是1字节 怎么可能一位
哪怕你打1 0也都要占用1个字节
哪怕你打1 0也都要占用1个字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询