c++ 宏要点;

来源:互联网 发布:怎么破解软件密码 编辑:程序博客网 时间:2024/06/06 14:17
#pragma once


/*
枚举分为两种类型:
1.枚举类,enum class,枚举值在局部作用域内,枚举值不会隐式地转换成其他类型;


2.普通枚举,枚举值名字与枚举类型在同一作用域内,枚举值隐式地转为整数;
*/


enum class color{red,green,blue};


// 测试:
/*
color c= color::red;
if (c == color::red)
if(color::red == 9)// error
*/


/*
要点2,如果作为switch处理,则必须处理每一个枚举类值,否则会提示警告信息;
*/




/*
要点3:如果需要整数类型,则使用static_cast强制转换;
*/




/*
要点4:可以将其定义为1,2,4,8之类的值,进行与或运算;
如:constexpr operator|(x1,x2){return x1|x2; }
*/




//要点5:这里char的意思是诸如red能捕获到到值范围;此外,对其sizeof结果是对基础类型结果,枚举类型尺寸是sizeof(int)
enum class color2 :char
{
red,yellow,other
};




/*
要点6:普通类型枚举变量不能有两个相同取值,如:enum e1{red},e2{red},二者会冲突;
这里也可以看出,枚举类出现主要目的是解决大型程序中枚举值冲突问题;


需要注意的是不同枚举类值不能互相比较,因为二者是不同类型;


此外也可以不用命名使用,目的只是使用其常量值;


枚举可以先声明再进行使用;
*/




/*********************************语句表达式******************************************/


//要点1:在switch分支中,不要定义和使用变量;如果需要使用,应放在一个块中;


//要点2:goto语句只能向后跳转,不能向前跳转;


//要点3:嵌套注释会寻找最后一个符合的*/


//要点4:求值顺序,如y=f1+f2,先求f1还是先求f2没有正式规定;


//要点5:c11指针类型bool转换和普通bool判别式相同,不需要使用老版本风格。
原创粉丝点击