c++ 0 x现在被称为c++ 11(因为它不是过去十年完成),它终于被批准。我打算绕过添加一些关于它的教程,但我想做一些可能更直接的STL以来首次适用于大多数人。编译器支持c++ 11而参差不齐(见http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport)。
(init-statement;expr1 expr2)
声明;
循环考虑最简单的方法是将其转换成等价的while循环。在旧版本的C + +,上面的for循环是完全等价的:
/ /老的编译器
init-statement;
而(expr1)
{
声明;
expr2;
}
然而,在更新的编译器,init-statement现在被认为是在声明的变量作用域里面虽然块,而不是外面。这被称为循环范围。与循环变量范围内只存在循环,而不是访问外。因此,在更新的编译器,上面的for循环实际上是相当于在声明如下:
/ /更新的编译器
{
init-statement;
而(expr1)
{
声明;
expr2;
}
} / / init-statement中声明变量的范围
for语句是评估在3部分:
1)Init-statement评估。通常,init-statement由变量声明和作业。这句话只是评估一次,当循环首先是执行。
2)表达式expr1评估。如果expr1是假的,立即循环终止。如果expr1是真的,将执行该语句。
3)后执行该语句时,表达式expr2评估。通常,这个表达式由递增/递减init-statement中声明的变量。expr2评估后,循环返回到步骤2。