我在Microsoft Visual Studio中编写了一个C ++程序(我刚刚开始学习)。这是我的代码:
else
// time is in seconds
int time = 0;
double speed = 0.0;
while (height >= 0)
{
cout << "At " << int time << " secs the ball is at height: " << height << " metres.\n";
time++;
height -= distanceTravelled(speed);
speed += gravity;
}
// If height dropped from positive to negative in one second, the final fraction of a
// second before it hits the ground isn't displayed - so the if statement
if (height <= 0)
cout << "At " << time << " secs the ball is at height: " << height << " metres.\n";
当我尝试构建它时,我收到错误
&#34;时间&#34;是未声明的标识符。
但是我已经在while循环之外声明了它。那为什么不能找到呢?
答案 0 :(得分:4)
您发布的代码中存在两个问题。一个是输出线上的虚假int
。应该就是这样:
cout << "At " << time << " secs the ball is at height: " << height << " metres.\n";
第二个问题是你的else
缺少大括号。这意味着只有time
的声明在else
分支内,而其他所有内容都与条件处于同一级别(缩进在C ++中不计算)。所以看起来应该是这样的:
else
{
// time is in seconds
int time = 0;
double speed = 0.0;
while (height >= 0)
{
cout << "At " << time << " secs the ball is at height: " << height << " metres.\n";
time++;
height -= distanceTravelled(speed);
speed += gravity;
}
// If height dropped from positive to negative in one second, the final fraction of a
// second before it hits the ground isn't displayed - so the if statement
if (height <= 0)
cout << "At " << time << " secs the ball is at height: " << height << " metres.\n";
}
答案 1 :(得分:1)
问题是你在cout语句中声明了一个新变量:
cout&lt;&lt; “At”&lt;&lt; int 时间&lt;&lt; “球在高处:”&lt;&lt;高度&lt;&lt; “米。\ n”;
只需删除 int
即可答案 2 :(得分:1)
这是你的问题:
else //<==== missing paranthesis
// time is in seconds
int time = 0;
double speed = 0.0;
在其他情况下你没有开放的副词。实际发生的是,else之后的第一个语句是if-else语句的假分支。之后发生的事情不是。因此, double speed = 0.0; 行之后的所有代码都在if语句之外,这在代码摘录中是不可见的。
这实际上使 int time 处于一个完整的其他范围,而不是进一步访问此代码的代码。这就是代码访问 int time 变量,找不到它。
要修复:添加{after else并再添加}以包含您的逻辑。
答案 3 :(得分:0)
这一行存在问题。
cout << "At " << int time << " secs the ball is at height: " << height << " metres.\n";
int time
应仅由time
替换。
数据类型仅在定义时使用变量指定,如int time
中所示,或者在投射数据类型时,如(int)time
中所示。您只是打印int
变量。
我无法重现您使用g ++编译器所面临的完全相同的错误,但更改上述内容可能会解决此问题。