C ++为什么在条件中不能在do中声明变量

问题描述 投票:0回答:1

我读过c ++ primer,这本书说是因为先运行do {},然后运行判断条件,因此,如果do {}中使用的变量然后在condition中的声明是错误的。但是如果我不在do {}中使用变量,而仅在condition中使用。那为什么我不能在条件中声明变量而仅在条件中使用它呢?

do{
//not use val
}
while (int val = getchar())
//error
c++ c++11 c++14 do-while
1个回答
0
投票

当声明用作循环条件时,它声明的变量仅在循环的迭代期间存在。

[如果在do-while条件中允许声明,则该声明只能在条件语句过程中,而不能在其范围之外。但是在那种情况下,声明将等同于仅使用初始化程序中的表达式(可能会显式转换)。

例如

do{
//not use val
}
while (int val = getchar());

将与]完全相同>

do{
//not use val
}
while (getchar());

因为第一个版本没有意义,所以该语言不允许使用它。

© www.soinside.com 2019 - 2024. All rights reserved.