1.常数
C++中的const变能在任何常数出现的地方使用;
例子:
const int Size=100;
Float a[Size];
2.数据类型bool
在C++中,新增了一种数据类型bool,可以取值true或false,用来表示真或假,通常应用于条件值,函数返回值等;
默认情况下,bool表达式进行输出时,默认操纵符为(noboolalpha),即输出0或1;若要输出true或false,则需要增加操纵符boolalpha;
例子:
bool flag;
flag=(3<5);
cout<<flag<<'\n';
cout<<boolalpha<<flag<<'\n';
3.枚举类型
①定义:
枚举(enum)是C++中一种派生数据类型,它是用户定义的若干枚举常量的集合;所谓枚举,就是将变量的值一一列举出来,变量的值只能在该列举的范围内;
例子:
enum weekday{
sun=0,
mon=1,
tue=2,
wed=3,
thu=4,
fri=5,
sat=6
};
②枚举类型的声明:
enum [枚举类型名]{枚举常量表列};
enum [enumeration name] {
enumerator1[=value1],
enumerator2[=value2],
...
};
说明:
1.对枚举元素按常量处理,故称枚举常量,也称枚举子
2.枚举元素是有值得,C++在编译时默认按顺序赋值为 0,1,2,3……..,也可以在声明时为其赋初值
3.一个整数不能直接赋值给枚举变量;比如:
weekday wk=4;//这是错误的
4.枚举值可以用作判断比较
③综合例子:
//==================================================
//程序描述:浅谈C++枚举
//Date:2016年1月18日 by Ye_wolf
//题目描述:
// 口袋中有红、黄、蓝、白、黑5种颜色的球若干个。
// 每次从口袋中任意取出3个球,问得到3种不同颜色的球的可能取法
// ,输出每种排列的情况。
//备注:
//==================================================
enum Color{
red=1,
yellow=2,
blue=3,
white=4,
black=5
};
//========================【题目分析部分】=============================
//由题意,该题为组合问题:简而言之就是C53,但是不用公式来做,即为:
// for(int i=red;i<=black;i++)//从五个球中选取一个球,第一个球
// for(int j=red;j<=black;j++)//从五个球中选取一个球,第二个球
// if(i!=j)//两种球的颜色不同
// for(int k=red;k<=black;k++)//从五个球中选取一个球,第三个球
// if(i!=k&&j!=K)//三个球颜色尽皆不同
// 因为每次都是从5个球从选出1个球,选三个球可能出现颜色相同顺序不同的组合;
// 这是我们将5个球分别用无重复单一数字表示,那他们每种组合的乘积唯一
// 比如红黄蓝=1*2*3和黄蓝红=2*3*1乘积相等,我们只需要取他们中一个即可,因为我们求得是组合问题
// 我们再将每次乘积作比较,取出不同的即可
//========================【头文件部分】=============================
#include <iostream>
#include <string>
//#include <iomanip>
using namespace std;
//=========================【主函数】============================
int main()
{
int count=0;
string ballColor1,ballColor2,ballColor3;
int array[60]={0};
for(int i=red;i<=black;i++)//从五个球中选取一个球,第一个球
for(int j=red;j<=black;j++)//从五个球中选取一个球,第二个球
if(i!=j)//两种球的颜色不同
for(int k=red;k<=black;k++)//从五个球中选取一个球,第三个球
if(i!=k&&j!=k)//三个球颜色尽皆不同
{
for(int ax=0;ax<=count;ax++)
{
if(array[ax]==(i*j*k))
{
array[count]=(i*j*k);
goto loop1;
}
}
count++;
switch(i){
case 1:ballColor1="red";break;
case 2:ballColor1="yellow";break;
case 3:ballColor1="blue";break;
case 4:ballColor1="white";break;
case 5:ballColor1="black";break;
default:break;
}
switch(j){
case 1:ballColor2="red";break;
case 2:ballColor2="yellow";break;
case 3:ballColor2="blue";break;
case 4:ballColor2="white";break;
case 5:ballColor2="black";break;
default:break;
}
switch(k){
case 1:ballColor3="red";break;
case 2:ballColor3="yellow";break;
case 3:ballColor3="blue";break;
case 4:ballColor3="white";break;
case 5:ballColor3="black";break;
default:break;
}
cout<<count<<","<<ballColor1<<","<<ballColor2<<","<<ballColor3<<endl;
loop1:break;
}
return 0;
}
④:其实枚举主要作用是用来确定变量范围,提高执行效率;
4.定义变量
在C语言中,变量必须在程序块开始的位置定义,而在C++中变量可以做到“随用随定”,即在哪里需要用到变量,就可以在哪里定义;
例子:
void reverse_and_print(int a[],int size)
{
int i;
//fill the array
for(i=0;i<size;i++)
a[i]=2*i;
//reverse the data in the array
int temp;
for(i=0;i<size/2;i++){
temp=a[i];
a[i]=a[size-1-i];
a[size-1-i]=temp;
}
//print the array
for(i=0;i<size;i++)
cout<<a[i]<<'\n';
}
5.结构体
//==================================================
//程序描述:浅谈C++结构体
//Date:2016年1月18日 by Ye_wolf
//备注:
//==================================================
#include <iostream>
#include <string>
using namespace std;
/*在c++中struct和类的区别在于struct不能有方法,所有成员是public的*/
struct Movie/*可以指定类型名也可以不指定*/
{
//成员都是public的
int ID;
string Name;
} movie; //可以在声明struct的时候声明一个struct实例
int main(){
//movie变量在Movie结构声明处定义了
movie.ID = 100;
movie.Name = "Face Off";
cout<<"movie.ID = "<<movie.ID<<endl;
cout<<"movie.Name = "<<movie.Name<<endl;
//声明一个变量m,无须为赋初值就可以使用它了
Movie m;
m.ID = 101;
m.Name = "多面双雄";
cout<<"m.ID="<<m.ID<<endl;
cout<<"m.Name="<<m.Name<<endl;
//声明结构的指针
Movie * mp;
mp = &m;
//在指针中调用成员时要用->符号,mp->ID等价于(*mp).ID
cout<<"mp->ID = "<<mp->ID<<endl;
cout<<"mp->Name = "<<mp->Name<<endl;
}