gpt4 book ai didi

c++ - long long int 类型函数返回十进制值

转载 作者:太空宇宙 更新时间:2023-11-03 10:28:44 25 4
gpt4 key购买 nike

我写了一段代码,它会在给定一个整数的情况下返回平方根(没有小数位,即平方根的下限)。但是当我调用它时,它给了我一个十进制值。为什么会这样?这是代码`

#include<iostream>

using namespace std;

long long int sqrt(long long int a){
long long int upper = a,lower=0;
long long int mid = 0;
while (!(mid*mid >= a and (mid-1)*(mid-1) < a)){
mid = (lower+upper)/2;
if(mid*mid > a){
upper = mid;
}
else if(mid*mid <= a){
lower = mid;
}
}
return mid;

}
int main(){
int a;
while(cin>>a){
cout<<sqrt(a)<<endl;
}
}

最佳答案

问题的原因在其他答案中已经正确定位,但解决方案并不尽如人意。您希望 sqrt 的所有重载(您自己的函数和 namespace std 中提供的函数)都可用,并且不需要任何范围解析,例如 mymath::sqrt.

解决办法一定要看函数调用。你基本上有

long long int sqrt(long long int);  // your function
float sqrt(float); // from namespace std
double sqrt(double); // from namespace std
long double sqrt(long double); // from namespace std
double sqrt(integral_type); // from namespace std in C++11

由于您调用了 sqrt(int),因此将选择最后一个重载(如果您有 C++11),否则将选择第三个。为了选择您自己的函数,您必须调用它:

int main(){
long long int a;
while(cin>>a) {
cout<<sqrt(a)<<endl;
}
}

关于c++ - long long int 类型函数返回十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24311201/

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