C++中布尔类型

1.

当表达式需要一个算术值时 布尔对象(如 found)和布尔文字都被隐式地提升成 int(正 如下面的例子) false 变成 0 而 true变成 1 例如   

bool found = false; 
int occurrence_count = 0; 
 
while ( /* 条件省略  */ ) 

   found = look_for( /* 内容省略 */ ); 
    
// found 的值被提升为 0 或者 1 
   occurrence_count += found; 
}


 

2.

正如文字false 和 true能自动转换成整数值 0 和 1 一样 如果有必要 算术值和指针值也 能隐式地被转换成布尔类型的值 0或空指针被转换成 false 所有其他的值都被转换成 true  例如  
 
// 返回出现次数 
extern int find( const string& ); 
bool found = false; 
if ( found = find( "rosebud" )) 
     // ok: found == true 
 
 
// 如找到返回该项的指针 
extern int* find( int value );  
if ( found = find( 1024 )) 

     // ok: found == true  





布尔类型对象可以被赋予文字值true或者false,所对应的关系就是真与假的概念。 

  我们通常使用的方法是利用他来判断条件的真与假,例如下面的代码:

#include <iostream>  
using namespace std;  
  
void main(void)  
{  
    bool found = true;  
    if (found)  
    {  
        cout << "found条件为真!" << endl;  
    }  
  
}

        但是一些概念不清的人却不知道布尔类型的对象也可以被看做是一种整数类型的对象,但是它不能被声明成signed,unsigned,short long,如果你生成(short bool found=false;),那么将会导致编译错误。 

  其为整数类型的概念是这样的:

  当表达式需要一个算术值的时候,布尔类型对象将被隐式的转换成int类型也就是整形对象, false就是0,true就是1,请看下面的代码!

#include <iostream>  
#include <string>  
using namespace std;  
  
void main(void)  
{  
bool found = true;  
int a = 1;  
cout << a + found << endl;  
cin.get();  
}

  a+found 这样的表达式是成立的,输出后的值为2进行了加法运算! 

  那么说到这里很多人会问指针也可以吗?回答是肯定的这样一个概念对于指针同样也是有效的,下面我们来看一个将整形指针对象当作布尔对象进行使用的例子:

#include <iostream>  
using namespace std;  
  
void main(void)  
{  
    int a = 1;  
    int *pi;  
    pi=&a;  
  
    if (*pi)  
    {  
        cout << "*pi为真" << endl;  
    }  
    cin.get();  
}

  上面代码中的*pi进行了隐式样的布尔类型转换表示为了真也就是true。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值