您的位置:首页 > 编程语言 > C语言/C++

C++语言的布尔类型和枚举类型

2008-09-12 14:30 155 查看
布尔类型对象可以被赋予文字值true或者false,所对应的关系就是真于假的概念!

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

  C++ 代码

//程序作者:管宁
//站点:www.cndev-lab.com
//所有稿件均有版权,如要转载,请务必著名出处和作者

#include <iostream>
using namespace std;

void main(void)
{
 bool found = true;
 if (found)
 {
  cout << "found条件为真!" << endl;
 }

}
  如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。

  举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔合中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!

  C++ 代码



enum box{pencil,pen};
//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。
  在这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!








C++中布尔类型

 布尔类型对象可以被赋予文字值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。

来源:网络

show_item("75305","sign");

  C++ 代码


enum box{pencil,pen};
enum box box2;//或者简写成box box2;
  再有一种就是在声明的时候同时定义。

  C++ 代码



enum {pencil,pen}box,box2;
//在声明的同时进行定义!
  枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!

  C++ 代码



enum box{pencil=1,pen=2};
  但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如

  C++ 代码



enum box{pencil=3,pen};
//这里pen就是4系统将自动进行pen=4的定义赋值操作!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: