为什么编译除以0不报错
Ⅰ 奇怪的除以0
你上面的解释是基本正确的。实际上造成二者的差异的主要原因是在计算时,完成计算的处理单元不同。具体要从CPU的运算体系说起,简单的说,整数的运算和浮点数的运算不在同一运算单元中,一般CPU中都有浮点运算协处理器,浮点运算都是在这个协处理器中进行的,然后将运算结果交给CPU,让CPU进一步处理。为了保证CPU处理浮点运算结果的安全性,保护程序,因此浮点运算协处理器遇到除0的情况时,返回一个无穷大(当然在数学上这也是合理的),而不产生一个错误中断,将这个无穷大交还给CPU后,CPU也认为是合理的,不会中断,继续运行下去,因此不会产生任何异常。
但如果是整数除0,由于整形计算都是在CPU中进行,除0后会产生一个中断,编译器捕获到这个中断向量以后就会抛出一个异常(java)或者编译错误(C/C++)。
Ⅱ c语言中除法里除数为0,编译器会不会报错么
一般编译器进行编译时不对除数做检查,这应该由程序员在代码里在除法前对除数做判断保证的
Ⅲ 程序正常编译,但执行过程中因为被除数为0而发生错误,这是哪种错误
这是运行时错误啊, 除数当然不能为0了,
Ⅳ 为啥我这个输出一直是0,编译没错误,运行就是0
scanf("%lf",&x); 就可以了,没有必要限制手动输入的格式。
Ⅳ java新手,为什么除数为0,却不报错
因为0.0是float类型在除法中不会用准确的0而是一个接近0的小数
Ⅵ C++能实现任何数除以0的值的运算的原因是什么
这应该和开发环境处理异常问题有关,我们在写程序的时候会存在语法错误或是逻辑错误,而语法错误编译通不过,系统能直接找到并给出,但逻辑错误编译能通过,系统则不能找到,只会在执行的时候出现异常的错误。而除以0在开发环境中是没有语法错误的,系统则不会报错,编译能通过,而我们在运行的时候就会出现了一些莫名其妙的异常错误。以上也是我的猜测,没深入研究过。
Ⅶ 除数为何不能为0啊,为什么除以0等于错误
因为除数表示把一个数分成多少份,如果是2,就是把一个数分成2份;如果是5,就是把一个数分成5份;而如果是0,那么,就是把一个数分成0份,这显然是没有道理的,是不成立的,所以0不能够做除数。
Ⅷ C++中,以下代码有错误为何编译器不会报错呀
大哥,操作符不是定义的,而是要重载。
看了这句应该理解为何了吧?
也就是说,你的类如果不重载操作符,那么将调用系统自定义的操作符。
所以编译器不会报错,也没有错误。
除非你要重载操作符,来完成你特定的操作。
Ⅸ Java中为什么整数除以0出现异常
这种问题写个代码跑一下就可以了,java中整数除以0会引发
java.lang.ArithmeticException: / by zero
ArithmeticException是出现异常的运算条件时,抛出此异常,结果如下图:
除此之外还要注意,浮点数除以0将会的得到 Infinity(无穷大)或NaN结果,但不会报异常。
Ⅹ 为什么我这个程序编译不报错,运行报错
这个是运行时错误,编译器在编译时无法检查此类错误,因为很多情况下值并不是固定的,编译器无法判断值是否合法,你这种情况就是数组下标越界,再仔细检查一下代码