关于C++的几个小问题。

为什么没有#include <cmath>也能用sqrt函数?为啥当输入int area时,输入6.25就出现2.44949,把int换成double后,输入6.25就出现2.5?用的是VS2015。

VS环境问题
VS可能会自动推断你所需要包含的头文件或者在项目设置中有包含该头文件
在其他环境下通常无法通过编译。

还有一种可能是间接包含,即iostream中包含了cmath,你可以去除掉iostream这个头文件的包含声明,然后再试试看是否能编译过sqrt来判断是否为这一种可能追问

那那个2.44949是怎么回事?

追答

第一次没注意到还有问这个,不好意思。
其实很简单,你只需要输出一下area就能发现问题
你第一次设置成int类型,输入6.25,由于6.25是小数,所以读取的时候读到小数点就停止了(因为int不能存小数),所以int area = 6
sqrt(6) = 2.44949
而设置成double时,double area = 6.25
sqrt(6.25) = 2.5

追问

(⊙o⊙)哦,原来是这样

温馨提示:答案为网友推荐,仅供参考