我读过c ++ primer,这本书说是因为先运行do {},然后运行判断条件,因此,如果do {}中使用的变量然后在condition中的声明是错误的。但是如果我不在do {}中使用变量,而仅在condition中使用。那为什么我不能在条件中声明变量而仅在条件中使用它呢?
do{
//not use val
}
while (int val = getchar())
//error
当声明用作循环条件时,它声明的变量仅在循环的迭代期间存在。
[如果在do
-while
条件中允许声明,则该声明只能在条件语句过程中,而不能在其范围之外。但是在那种情况下,声明将等同于仅使用初始化程序中的表达式(可能会显式转换)。
例如
do{
//not use val
}
while (int val = getchar());
将与]完全相同>
do{ //not use val } while (getchar());
因为第一个版本没有意义,所以该语言不允许使用它。