Dev-C++ 没有显示该程序的 ant 输出
Posted
技术标签:
【中文标题】Dev-C++ 没有显示该程序的 ant 输出【英文标题】:Dev-C++ is not showing ant output for this program 【发布时间】:2021-09-16 03:12:40 【问题描述】:当我在 dev C++ 中运行以下代码时,输出为空,即使在线编译器运行良好。我的代码中是否存在特定错误,或者我是否更改了开发 C++ 设置
#include<iostream>
#include<vector>
using namespace std;
class node //node definition
public:
int data;
node* next;
node(int value=0)
data=value;
;
node* insert(node* head,int data) //node insertion
node* ins=new node(data);
if(head==NULL)
return ins;
else
node* ptr=head;
while(head->next!=NULL)
head=head->next;
head->next=ins;
ins->next=NULL;
return ptr;
void print(node* head) //printing the values of linked list
while(head!=NULL)
cout<<head->data<<" ";
head=head->next;
int main()
vector <int> a1,2,3,6,8;
node* list=NULL;
for(int x:a)
list=insert(list,x);
print(list);
谁能解决这个问题?
【问题讨论】:
相关问题:endl
and flushing the buffer。也请考虑阅读Why is using namespace std;
considered bad practice?。
长话短说:我建议在print
函数的末尾添加std::cout << std::endl;
。
短篇小说:您不会默认初始化结构的 next
成员。因此,当您第一次调用 insert
时,new
结构的 next
成员可以是任何东西。在线编译器可能会意外地给出 nullptr
(零)值,但您不能依赖它。
另外,我建议检查您调用的 exe 文件是否正确。也许它会在某个调试或其他子目录中。请检查您的编译器以获取正确的输出路径设置。只是也许。 . .
No head no print,head为null时不分配head。
【参考方案1】:
您忘记初始化新分配的node
的next
成员,因此您的列表在第一个节点插入后的末尾有一个未定义的(并且可能是非法的)指针值。
从那时起,程序的行为是未定义。
修复正在完成构造函数:
node(int value=0)
data = value;
next = nullptr;
【讨论】:
感谢您的帮助。但是我仍然想知道为什么在线编译器即使在下一个没有用 nullptr 初始化的情况下也能正确执行? @manaschinta 未定义行为是未定义的行为。语言标准、特定编译器、运行时库规范或执行环境都没有定义应该或可能发生什么。该程序可能会立即崩溃,或者它可能运行良好。它也可能假装在工作,但会在其他地方默默地破坏其重要数据,并在一些明显不相关的操作中崩溃。行为不必是可预测的,甚至是可重复的。 @manaschinta 可能在线编译器使用清除分配器,它用零初始化内存,从而导致指针成员为nullptr
(AFAIK,它本身是依赖于实现的) .但这并不能保证,并且根据您的经验,不必在不同的环境或不同的机器上工作相同。它也可能在没有事先通知的情况下发生变化,因为它甚至没有被定义,特定的行为将保持不变。以上是关于Dev-C++ 没有显示该程序的 ant 输出的主要内容,如果未能解决你的问题,请参考以下文章
DEV-C++中编写了一段C程序,其中设置了用文件进行输入输出。
编译好的c程序放到没有程序编译环境的电脑上(就是没有安装dev-c++、visual studio