#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
bool c[30];
memset(c,-1,sizeof(c));
cout<<sizeof(bool)<<endl;
cout<<sizeof(c)<<endl;
cout<<c[0]<<endl;
}
输出是
1
30
255
首先,bool型和char型一样,是占一个字节的存储空间
所以sizeof(bool)是1
而sizeof(c)是运算整个数组的大小,自然是1*30=30
而c[0]取的是数组第一个值,而这个值又被memset为-1了
同时cout是没法直接输出bool型的,只能将bool型强制类型转换为unsigned char来输出,所以-1转换为unsigned char当然就是255
另外第三种情况是毫无意义的,这种在实际情况用不到,或者避免用到的情况不知道也没关系,跟把一堆运算符丢到一句里面,然后判断最终运算的结果是什么一样没有意义,实际的程序中没有谁(2B程序员除外)会把代码故意写得很生涩。如果要用cout输出bool型,也会是cout<
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。