【问题标题】:I get 'Command not Found' when compiling c++ file [closed]编译 c++ 文件时出现“找不到命令”[关闭]
【发布时间】:2020-06-01 00:41:54
【问题描述】:

我正在编写一个从 10 倒数到 0 的 C++ 程序。

#include <iostream>
using namespace std;
int main() 
{
 int i=10;
while (i> 10){ 
 cout << " count down: " << i << endl; i--;
 }
 return 0; 
 }

以上是我的 C++ 代码。但是,当我尝试编译它时出现以下错误:

clang 版本 7.0.0-3~ubuntu0.18.04.1 (tags/RELEASE_700/final)

clang++-7 -pthread -o main main.cpp 

./main 10 bash: 10: 找不到命令

【问题讨论】:

  • 试试while(i &gt;= 0)。您的 while 等待 i 大于 10 并且 i 已经从 10 开始,因此跳过了 while
  • 请尝试对你的代码做一些rubber duck debugging。如果i == 10 条件i &gt; 10 何时会为真?
  • 如果将int i=10; 更改为int i =20; 会发生什么?
  • 杰伊,你已经说过一个答案(这对我来说似乎是合理的)不起作用。请添加与您实际获得的结果相反的预期结果的详细信息。你的输出是什么?显示的代码以哪种方式不起作用?没有这些细节,问题就缺乏细节和清晰度。我将特别感谢有关@Shudipta 答案如何失败的更多详细信息,这些详细信息可能也有助于理解您的实际问题。

标签: c++ linux compilation


【解决方案1】:

只需更改while (i&gt; 10) 行,如下所示:

while (i >= 0)

然后运行看看输出:

 count down: 10
 count down: 9
 count down: 8
 count down: 7
 count down: 6
 count down: 5
 count down: 4
 count down: 3
 count down: 2
 count down: 1
 count down: 0

【讨论】:

  • 谢谢。这有点帮助。我仍然无法让我的代码从 10 倒数到 0
  • Jay,这段代码会发生什么?
  • Shudipta Sharma,请展示您通过相当合理的提议代码更改获得的输出。
  • Jay,请展示您使用此解决方案的尝试。为此,我建议编辑问题并添加类似“我尝试了下面 Shudipta 的答案,通过尝试此版本的代码/* your code */。它不起作用,而是……”
  • 我可以,但这不是您改进答案的方法。请edit 添加有用的信息,最好直接在此处作为文本。还在这里显示代码可能会对 OP 产生影响。然而,我怀疑,即使是对这段好代码的最佳解释也可以解决上述评论中 OP 所描述的调用编译器失败的问题......
【解决方案2】:
#include <iostream>

using namespace std;


int main(){

    for (int i =10; i >=0; --i)
    {
       cout << " count down: " << i << endl;
    }

    return 0; 

}

【讨论】:

  • 提问者通常认为答案更有帮助,尽可能接近他们显示的代码。
  • 嗯,嗯,最有兴趣了解他们的错误的提问者是......
  • Jay,如果您在尝试编译其他答案之一时遇到 command not found 错误,我很难理解这是如何工作的,正如您所评论的那样。
【解决方案3】:

使用 While 循环

#include <iostream>
using namespace std;

int main()
{
int i=10;    //Declare i inside the main function
while(i>=0,i--)
    cout<<i<<endl;

return 0;
}

或者使用 for..loop。

#include<iostream>
using namespace std;

#include <iostream>
using namespace std;

int main()
{
for(int i=10;i>=0;i--) //Declare i locally inside the loop
    cout<<i<<endl;

return 0;
}

循环中有 3 个参数。一个开始/初始化(i=10),一个结束条件(i>=0)和一个计数器(i++ 或 i--)。我刚刚在参数括号内声明了计数器条件。这与在循环结束时声明 i-- 没有什么不同,这样做是为了提高可读性。此外,您应该阅读范围。

for..loop 中的 i 只能在循环内部使用。一旦 for..loop 退出,它将被销毁,而(没有双关语)第一个我声明 before while..loop 可以在整个函数中使用,因为它是在主范围内初始化的。

当您知道计数器的范围时使用 For..loop,而当您想要满足特定条件时使用 while..loop。

OP 的错误在于他在 i>0 而不是 i>=0 处结束循环。改变整个输出的是 1 次迭代的差异

【讨论】:

  • 您的 while 循环以及使用 , 运算符的额外复杂性将受益于一些额外的解释。此外,OP 已经将一种非常相似的方法评论为不起作用(尽管这也需要一些额外的解释......)。
  • 我怎样才能在 C++ 编程方面做得更好。我在教科书中解决问题,但我仍然在努力
  • Jay,一种方法是与在 StackOverflow 上对您的帖子做出反应的人进行实际交流。忽略反馈无助于成为更好的程序员。
  • @JayLegette 练习和解决问题。编码只是一种翻译工具,用于告诉系统如何工作。他们不会自动解决您的问题。尝试在线或本地参加编码竞赛并参与开源项目。另外,请尝试阅读一些好书,它们应该会有所帮助。
  • 请通过editing 将两个cmets 前的解释添加到您的答案中。
猜你喜欢
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
相关资源
最近更新 更多