为什么在此代码中没有零编译时警告或运行时崩溃?

InQ*_*ive 0 c++

class Divide
{
public:
    float divident, divisor;
    Divide():divident(10.0f),divisor(0.0f){}
};

int main()
{
    Divide obj[100];
    int quotient = obj[1].divident/obj[1].divisor;
    return quotient;
}
Run Code Online (Sandbox Code Playgroud)

编辑:编译器Qt 5.3.1,Windows 7-32位.

为什么在编译时没有除零警告或发生运行时崩溃?

小智 6

它不会崩溃,因为你的浮点除法为零,而不是整数除零.浮点除零是获得无穷大的有效方法.

从转换floatint不确定,因为无限不在int的范围内,所以崩溃将被允许存在,但根本就没有什么典型的实现让它做.