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 &lt;&lt; std::endl; 短篇小说:您不会默认初始化结构的 next 成员。因此,当您第一次调用 insert 时,new 结构的 next 成员可以是任何东西。在线编译器可能会意外地给出 nullptr(零)值,但您不能依赖它。 另外,我建议检查您调用的 exe 文件是否正确。也许它会在某个调试或其他子目录中。请检查您的编译器以获取正确的输出路径设置。只是也许。 . . No head no print,head为null时不分配head。 【参考方案1】:

您忘记初始化新分配的nodenext 成员,因此您的列表在第一个节点插入后的末尾有一个未定义的(并且可能是非法的)指针值。

从那时起,程序的行为未定义

修复正在完成构造函数:

        node(int value=0)
        
            data = value;
            next = nullptr;
        

【讨论】:

感谢您的帮助。但是我仍然想知道为什么在线编译器即使在下一个没有用 nullptr 初始化的情况下也能正确执行? @manaschinta 未定义行为是未定义的行为。语言标准、特定编译器、运行时库规范或执行环境都没有定义应该或可能发生什么。该程序可能会立即崩溃,或者它可能运行良好。它也可能假装在工作,但会在其他地方默默地破坏其重要数据,并在一些明显不相关的操作中崩溃。行为不必是可预测的,甚至是可重复的。 @manaschinta 可能在线编译器使用清除分配器,它用零初始化内存,从而导致指针成员为nullptr(AFAIK,它本身是依赖于实现的) .但这并不能保证,并且根据您的经验,不必在不同的环境或不同的机器上工作相同。它也可能在没有事先通知的情况下发生变化,因为它甚至没有被定义,特定的行为将保持不变。

以上是关于Dev-C++ 没有显示该程序的 ant 输出的主要内容,如果未能解决你的问题,请参考以下文章

DEV-C++中编写了一段C程序,其中设置了用文件进行输入输出。

编译好的c程序放到没有程序编译环境的电脑上(就是没有安装dev-c++、visual studio

无法在 dev-c++ 上编译程序?

Flyway Ant 任务在没有 Ant 的调试模式的情况下显示迁移错误

用Ant手动打包android程序

无法使用Ant构建JavaFX应用程序