在C++ 中 bool类型占用1个字节长度,bool 类型只有两个取值,true 和 false,true 表示"真",false 表示"假"。
需要注意的C++中使用cout 打印的时候是没有true 和 false 的 只有0和1 ,这里0表示假,非0表示真
1 查看字节
int main() {
bool i = true;
bool j = false;
//使用sizeof查看占用的字节
cout<< "i的字节=" <<sizeof(i) <<",j的字节=" <<sizeof(j) << endl;//打印结果
return 0;
}
2 验证0表示假,非0表示真
int main() {
// 验证0表示假,非0表示真
bool i = -100;
bool j = 0;
bool k =10;
// 打印结果i=1,j=0,k=1
cout<< "i=" <<i <<",j=" <<j <<",k="<<k <<endl;
return 0;
}
这个说下,bool i = -100 ,是非0的也就是真,由于cout 打印只有true 和false 就是 1 表示真,0表示false 所以就是bool i = -100 为真,也就打印为1 ,同理book k =10 也是这个道理
bool j =0 是false 打印结果为 0
如果上面看着模糊看下面的
int main() {
int a = 1;
int b = 2;
cout<< (a>b) <<endl; // 这里a>b 是false 打印结果是0
cout<<(a<b)<<endl; // 这里a<b 是true 打印结果是1
return 0;
}
3 bool 赋值true,false 使用
int main() {
// bool赋值true,false使用
bool i = true;
bool j = false;
cout<< "i=" <<i <<",j=" <<j << endl;//打印结果 i=1,j=0
if (i)
{
cout<<"true"<<endl; //打印结果true
}
if (j)
{
cout<<"true"<<endl;// 不会走到if里面
}else{
cout<<"false"<<endl;//打印结果为false
}
return 0;
}
到这里bool 算是回顾完了,我写一个demo 感兴趣的看下,如果在实际开发中自己会不会中招。
isOK(filePath) 不符合预期的 -1 ,
#include <iostream>
#include <string>
#include <unistd.h>
using namespace std;
bool isOK(const string &filePath){
return access(filePath.c_str(),R_OK);
}
int main() {
// 估计设置不经不存在
const char* filePath ="/home/hly/test.txt";
cout<< isOK(filePath) <<endl; //打印结果是1
cout<< access(filePath,R_OK) <<endl;//打印结果是-1
return 0;
}