c++中exit(0)不能正常退出整个主程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中exit(0)不能正常退出整个主程序相关的知识,希望对你有一定的参考价值。

本想用judgeReal()判断输入数据是否超出设定界限,输入一个超出设定界限的数值后,而是继续自动运行,弹出非输入的值
代码如下:
#include<iostream>
#include<cstdlib>
using namespace std;
class Real
public:
void setReal();
friend void judgeReal(const Real &r1,const Real &r2);
friend Real operator+(const Real &r1,const Real &r2);
friend Real operator-(const Real &r1,const Real &r2);
friend Real operator*(const Real &r1,const Real &r2);
friend Real operator/(const Real &r1,const Real &r2);
float r;
;
void Real::setReal()

cout<<"Input the figure of the real number:"<<endl;
cin>>r;

void judgeReal(const Real &r1,const Real &r2)

if(r1.r<-3.4e38||r1.r>3.4e38||r2.r<-3.4e38||r2.r>3.4e38)

cout<<"/nData overflow!"<<endl;
exit(0);


Real operator+(const Real &r1,const Real &r2)

Real r;
r.r=r1.r+r2.r;
return r;

Real operator-(const Real &r1,const Real &r2)

Real r;
r.r=r1.r-r2.r;
return r;

Real operator*(const Real &r1,const Real &r2)

Real r;
r.r=r1.r*r2.r;
return r;

Real operator/(const Real &r1,const Real &r2)

Real r;
r.r=r1.r/r2.r;
return r;

void main()

Real r1,r2,ra,rb,rc,rd;
r1.setReal();
r2.setReal();
judgeReal(r1,r2);
ra=r1+r2;
rb=r1-r2;
rc=r1*r2;
rd=r1/r2;
cout<<r1.r<<"+"<<r2.r<<"="<<ra.r<<endl;
cout<<r1.r<<"-"<<r2.r<<"="<<rb.r<<endl;
cout<<r1.r<<"*"<<r2.r<<"="<<rc.r<<endl;
cout<<r1.r<<"/"<<r2.r<<"="<<rd.r<<endl;

你可以将void judgeReal(const Real &r1,const Real &r2)
改成int judgeReal(const Real &r1,const Real &r2)
普通成功时返回0值,失败时不用exit(0);而返回非0值
主程序调用时根据返回值看是否执行exit();
由于void main()表示你的main函数没有返回值,你不能用exit(0);只能用exit();
参考技术A 你的目的没看懂。。。

system.exit system.exit systim.exit(-1)含义与区别

s首先他俩都是退出程序的意思:

区别在于:system.exit(0):正常退出,程序正常执行结束退出

                   system.exit(1):是非正常退出,就是说无论程序正在执行与否,都退出,


  1. System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() 。无论如何,内存都释放了!也就是说连JVM都关闭了,内存里根本不可能还有什么东西
  2. System.exit(0)是正常退出程序,而System.exit(1)或者说非0表示非正常退出程序
    1. System.exit(status)不管status为何值都会退出程序。和return 相比有以下不同点:return是回到上一层,而System.exit(status)是回到最上层

      对于只有一个单一方法的类或者系统来说是一样的,但是对于含有多个类和方法,且调用关系比较复杂时就不一样了。
      System.exit(-1)是指所有程序(方法,类等)停止,系统停止运行。
      return只是这一个方法停止,并不影响其他方法的顺序运行。比如:
      void a(){
      b();
      c();
      d();
      }其中b()中是return.c()是System.exit(-1);那么
      b()会执行,c()会执行,而d()不会被执行。

以上是关于c++中exit(0)不能正常退出整个主程序的主要内容,如果未能解决你的问题,请参考以下文章

C语言中exit();怎么用?

C语言中exit函数的使用

system.exit system.exit systim.exit(-1)含义与区别

System.exit和System.exit区别

程序代码中退出函数exit()与返回函数return ()的区别

C语言中的exit函数