我一直在使用文本编辑器和g ++来编译和运行程序一段时间,但出于某种原因,它今天停止了工作。
它将编译没有错误但是当我尝试运行可执行文件时,它没有做任何事情。没有错误,没有输出。没有。这是我试图运行的代码。
#include <iostream>
#include <fstream>
int main(){
// Initializes variable.
int coordinatePair;
// Creates an object to use for the file.
std::ofstream fileReader;
// Initiates a for-loop to get the value of each variable.
for(int i = 0; i == 5; i++){
std::cout << "Please enter the x-coordinate of your coordinate pair. " << std::endl << "You have " << 5 - i << " pairs left to enter." << std::endl;
std::cin >> coordinatePair;
// Opens the file.
fileReader.open("points.txt");
// Writes the user's values to the file.
fileReader << coordinatePair << std::endl;
// Closes the file.
fileReader.close();
}
}
在终端中,我创建了一个目录到文件位置......
cd ~/file location
然后我编译了它。
g++ points_out.cpp -o points_out
我试图运行它。
./points_out
没有任何反应。没有错误消息,没有输出,没有任何东西。虽然代码并不完全有效(我可能最好不要在for循环之外打开和关闭文件。)它仍然应该运行。我尝试输入错误的代码来查看会发生什么,它给了我正确的错误代码。我也试过
g++ -W -Werror points_out.cpp
......那并没有给我任何错误代码。我试着在我本周早些时候编译并运行的另一个.cpp文件中创建一个新目录,它运行得很好。出于某种原因,这个只是不会运行。而且我确信它正在编译,因为正在创建可执行文件。我也确信它没有运行,因为没有创建文本文件。
我得到了这个成功编译并运行一次的东西,它创建了文本文件。这是我第一次遇到g ++问题。我到处寻找解决方案,但大多数有这个问题的人都没有做过
./points_out
部分或与MingW有问题或需要卸载Avast。这些都不是我的问题,所以我不知所措。
此外,不确定这是否有帮助,但正在运行
g++ --version
给我以下输出:
g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
答案 0 :(得分:0)
对于什么都不做并成功完成的程序,这种行为是正常的。
C ++ for循环在进入循环体之前评估循环条件。完成循环体后,将评估可选的循环后表达式,程序将返回条件检查。
因此,您的代码会将值0
分配给i
,然后在允许进入循环之前测试是否i == 5
。
你的意图并不完全清楚,但你可能意味着
for (int i = 0; i < 5; i++)
我们可以使用这段代码快速演示:
#include <iostream>
int main() {
std::cout << "original loop:\n";
for (int i = 0; i == 5; i++)
std::cout << i << '\n';
std::cout << "corrected loop:\n";
for (int i = 0; i < 5; i++)
std::cout << i << '\n';
}
- 附录 -
大多数程序员都会考虑添加一些简单的,没有条件的东西
std::cout << "hello world\n";
在他们的程序的顶部,以验证它没有运行与不工作。