gpt4 book ai didi

c++ - 除以零预防

转载 作者:可可西里 更新时间:2023-11-01 16:29:20 26 4
gpt4 key购买 nike

什么是 1.#INF 以及为什么强制转换为 floatdouble 可以防止除以 0 崩溃?
另外,关于如何防止被 0 除的任何好主意? (像任何宏或模板一样)?

int nQuota = 0;

int nZero = 3 / nQuota; //crash
cout << nZero << endl;

float fZero = 2 / nQuota; //crash
cout << fZero << endl;

如果我改用:

int nZero = 3 / (float)nQuota;
cout << nZero << endl;
//Output = -2147483648

float fZero = 2 / (float)nQuota;
cout << fZero << endl;
//Output = 1.#INF

最佳答案

1.#INF 是正无穷大。当您将正 float 除以零时,您会得到它(如果您将 float 零本身除以零,那么结果将是“不是数字”)。

另一方面,如果将整数除以零,程序就会崩溃。

float fZero = 2/nQuota; 崩溃的原因是因为 / 运算符的两个操作数都是整数,所以除法是对整数执行的。然后将结果存储在 float 中并不重要; C++ 没有目标类型的概念。

为什么正无穷大转换为整数是最小的整数,我不知道。

关于c++ - 除以零预防,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11299992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com