1、条件运算符满足右结合律,意味着运算对象(一般)按照从右向左的顺序组合。
//靠右边的条件运算(比较成绩是否小于60)构成了靠左边的条件运算的:分支。
finalgrade = (grade > 90)?"high pass":(grade < 60) ? "fail":"pass";
2、位运算符,作用于整数类型的运算对象,并把运算对象看成二进制的集合。如果运算对象是一个"小整型",则它的值会被自动提升成较大的整数类型。
3、sizeof运算符
返回一条表达式或一个类型名字所占的字节数。sizeof运算符满足右结合律,其所得的值是一个size_t类型的常量表达式。
//运算符的运算对象有两种形式
sizeof(type);
sizeof expr ;
sizeof并不实际计算其运算对象的值。因此即使sizeof *p中的p是个无效指针,也仍然是一种安全行为。
4、while语句(不确定到底要迭代多少次时使用)
while的条件部分可以是一个表达式或者是一个带初始化的变量声明;
while(condition)
statement
while(int i = get_num()) //每次迭代时创建并初始化i
cout<<i<<endl;
5、do-while语句
do-while语句先执行语句或者块,后判断条件,所以不允许在条件部分定义变量(像在while-do语句中一样),因为先后关系。
do{
//...
mumble(foo);
}while(int foo = get_foo);//错误:将变量声明放在了do的条件部分
6,break&&continue语句
break语句负责终止离其最近的while,do while,for或switch语句。只能出现在迭代语句或者switch语句内部。break语句的作用范围仅限于最近的循环或者switch。
continue语句智能出现在for,while,do while循环的内部,或者嵌套在此循环里的语句或者块的内部。和break语句不同的是,只有当switch语句嵌套在迭代语句内部时,才能在switch里使用continue。
7,goto语句
goto语句和控制权转向的那条带标签的语句必须位于同一个函数内。和switch语句类似,goto语句也不能将程序的控制权从变量的作用域之外转移到作用域之内:
//..
goto end;
int ix = 10//错误:goto语句绕过了一个带初始化的变量定义
end:
//错误:此处的代码需要使用ix,但是goto语句绕过了它的声明
ix = 42;
8,try语句块和异常处理
异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持。在c++语言中,异常处理包括
throw表达式,异常检测部分使用throw表达式来表示它遇到了无法处理的问题。throw引发了异常。
try语句块,以关键词try开始,并以一个或多个catch子句结束。catch子句处理异常,异常处理代码。
一套异常类,用于在throw表达式和相关的catch子句之间传递异常的具体信息。
try{
program-statements
}
catch(exception-declaration)
{
handle-statements
}
catch(exception-declaration)
{
handle-statements
}
9,标准异常
c++标准库定义了一组类,用于报告标准库函数遇到的问题。他们分别定义在4个头文件中。
1 exception头文件定义了最通用的异常类exception。它只报告异常的发生,不提供额外信息。
2 stdexcept
3 new头文件定义了bad_alloc异常类型。
4 type_info头文件定义了bad_cast异常类。
只可以以默认方式初始化exception, bad_alloc, bad_cast对象,不允许为这些对象提供初始值。
其他异常类型必须使用string对象或者C风格字符串初始化这些类的对象,不允许默认初始化。
异常类型只定义了一个名为what的成员函数,该函数没有任何参数,返回值是一个指向C风格字符串的const char*。该字符串的目的是提供关于异常的一些文本信息。