能通俗一点吗
可为什么unsigned输出的是0,没有unsigned输出一个很大的数?
追答这是你y的问题,sqrt(-4)计算出来的肯定不是一个正确结果,但它却是是有数据的double型呢,从那个去掉unsigned的结果来看,可以看出所得的结果二进制开头是0,因为是负数,因此一个double赋予给一个int型,数据丢失只会剩下第一位。因此有unsigned是0,没有却是一个负数,并且2147483648的二进制是1000 0000 0000 0000呢,明显int都装爆了好吧。
visualstudio2015
追答我试试啊
试了,因为sqrt的原型为double sqrt(double),所以这个函数返回的是浮点数,然后在C语言的浮点数中有NAN的值,也就是代表not a number,不是一个有效数字。因为负数的平方根在实数范围内是无解的,所以在这里就返回NAN,然后再转成int类型就属于一个未定义的操作,返回什么数值都不要意外。