c++
a初始值是0,b=1/a,被除数是0所以出错了
a和sum都没有赋初值,这显然是错误的。这种情况下输出什么都不奇怪。
一个常见的误解是“局部变量会自动初始化”。很不幸,这个想法完全错误,局部变量不会自动初始化(尽管本地PC上通常会得到0,但对于频繁运行各种不同程序的机器而言,局部变量初始不是0的概率要显著更大,这也解释了缺少适当初始化的程序为什么经常能在本地运行却会在OJ挂掉),这意味着你的程序可能输出任何浮点结果,包括正常的数字、nan和inf。更何况,如果a正好初始化为0,你后面的代码也毫无意义啊,b会得到inf吧。sum的值更是无法预测。
顺便一提,long double虽然是标准的一部分,但long double的长度没有标准规定,因此我们一般会避免使用它,除非针对平台做特殊优化。