C++中char和bool类型都占一个字节,但是……

那编译器是怎么区分char类型跟bool类型的?

数据类型有两层意思 :1.规定数据的长度;2.规定在数据上能进行什么操作
例: int类型,长度为32位,能进行+ - * / % 操作。bool类型,长度为8位,只能进行异或操作。 char类型,长度为8位,能进行+ - * / %和字符操作。

那编译器是怎么区分char类型跟bool类型的?

c/c++的编译器中有一个变量表,表的关键字段有(数据类型,变量名,首地址,值),每声明一个变量,就把这个变量的相关信息填进表中
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-03
1.规定数据的长度;2.规定在数据上能进行什么操作。
例: int类型,长度为32位,能进行+ - * / % 操作。bool类型,长度为8位,只能进行异或操作。 char类型,长度为8位,能进行+ - * / %和字符操作。

c/c++的编译器中有一个变量表,表的关键字段有(数据类型,变量名,首地址,值),每声明一个变量,就把这个变量的相关信息填进表中。
第2个回答  2010-07-25
bool型就两个取值 ture和 false
char 虽然也是占一个字节, 但取值可以不同。

还有就是他们都是c/c++的内置数据类型,就是他们都是c/c++自己定义的类型,关于如何区分那我就不知道了!!
第3个回答  2010-07-25
char 中存储字符,全局变量初始为char(0)
bool 中存0或1,全局变量初始为数字0
第4个回答  2019-09-02
int 看cpu和平台;
char一般占8位;
bool一般占8位;
short一般占16位;
long一般占32位;

C++中char和bool类型都占一个字节,但是……
bool型就两个取值 ture和 false char 虽然也是占一个字节,但取值可以不同。还有就是他们都是c\/c++的内置数据类型,就是他们都是c\/c++自己定义的类型,关于如何区分那我就不知道了!!

C++中char和bool类型都占一个字节,但是……
数据类型有两层意思 :1.规定数据的长度;2.规定在数据上能进行什么操作 例: int类型,长度为32位,能进行+ - * \/ % 操作。bool类型,长度为8位,只能进行异或操作。 char类型,长度为8位,能进行+ - * \/ %和字符操作。那编译器是怎么区分char类型跟bool类型的?c\/c++的编译器中有一个变量...

C++中bool型输出的为什么不是ture和false而是0和1?
实际上bool型变量占用了 1 个字节的内存,当值为 false 的时候,实际上存储的是 0x00,为ture时实际上存储的是 0x01因此,可以认为bool类型做为整型用时为true=1,false=0

关于c++中bool类型的疑惑
因为bool型大小是一个字节,实际上因为只有0、1两个值,只需要1位,但是在C++中变量最小单位是一个字节,所以剩下的7位是浪费了。如果你想只使用1位,可以用C的位段或位操作。

c++bool型的memset问题,怎么解决?
首先,bool型和char型一样,是占一个字节的存储空间 所以sizeof(bool)是1 而sizeof(c)是运算整个数组的大小,自然是1*30=30 而c[0]取的是数组第一个值,而这个值又被memset为-1了 同时cout是没法直接输出bool型的,只能将bool型强制类型转换为unsignedchar来输出,所以-1转换为unsignedchar当然就...

c++bool型的memset问题,怎么解决?
首先,bool型和char型一样,是占一个字节的存储空间 所以sizeof(bool)是1 而sizeof(c)是运算整个数组的大小,自然是1*30=30 而c[0]取的是数组第一个值,而这个值又被memset为-1了 同时cout是没法直接输出bool型的,只能将bool型强制类型转换为unsignedchar来输出,所以-1转换为unsignedchar当然就...

C++中基本数据类型的表现形式
对于16位的char数据类型,它足以表示基本多语言平面中的任何Unicode字符。如果需要表示超出此范围的字符,则需要使用surrogate pairs。布尔类型(bool)在C++中是一个独立的基本数据类型,而在标准C语言中未定义此类型。在C++中,bool类型默认为单字节长度,其取值范围仅限于true和false,逻辑运算时默认非零即...

C++程序解析(需分析)
A正确,bool和char都是1字节,int为2或4字节,long和float4字节,double8字节。66,'A'的ASCII码是65,65+1.6=66.6取整为66。C正确,对a=(b=1)+2,所有编译器都会解释为b=1;a=b+2;,而其他各项不同的编译器可能会有不同解释。结果是60,x = ( a = 3 * 5 , a * 4), a + ...

C++中bool型输出的为什么不是ture和false而是0和1?
实际上,bool 类型的变量占用 1 个字节的内存。当 bool 变量值为 false 时,实际上存储的是 0x00。当 bool 变量值为 true 时,实际上存储的是 0x01。因此,可以认为 bool 类型在作为整型使用时,true 等于 1,而 false 等于 0。

C++能不能声明只占1个字节(或更少)的enum类型
enum类型,在C++中默认按照int或unsigned处理。如果在enum中存在负值,那么按照int处理,否则按照unsigned int处理。无论是哪种情况,均占4字节。这个大小是编译器决定的,无法更改。但是可以变通一下。如果确定一字节足够,可以定义char类型,然后赋值需要的enum类型。比如:enum {FALSE, TRUE};这里并没有...

相似回答