结果为什么是1而不是2?

r123ed 2020-06-27 09:44:11
#include<iostream>

double sqrt(double);


int main()
{
using std::sqrt;
double a = sqrt(4.0);
using std::cout;
cout << a;
return 0;
}

double sqrt(double a)
{
return 1.0;
}
...全文
161 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
千梦一生 2020-07-01
  • 打赏
  • 举报
回复
长见识了。讲了一些之前没考虑过的事情
lin5161678 2020-06-29
  • 打赏
  • 举报
回复
加头文件 #include<cmath>
千梦一生 2020-06-29
  • 打赏
  • 举报
回复
啊!这是一种经验,很多地方都适用的经验:

颇有一种奴隶的奴隶不是我的奴隶的意蕴于其中。
最近原则【县官不如现管、强龙不压地头蛇云云】

顺便说一句,这非要用外面那个可以:
double a = std::sqrt(4.0);//明确表示上访
棉猴 2020-06-29
  • 打赏
  • 举报
回复
这段代码可以好好看看,可能对你有帮助
r123ed 2020-06-29
  • 打赏
  • 举报
回复
引用 6 楼 棉猴 的回复:
这段代码可以好好看看,可能对你有帮助
多谢! 受教了!我这个是未定义行为,出不出错看编译器,原因是因为弱符号,还是规规矩矩做萌新吧。 下面这个解释比较到位,https://stackoverflow.com/questions/50898508/can-a-declaration-affect-the-std-namespace
ggglivw 2020-06-29
  • 打赏
  • 举报
回复
一顿操作猛如虎。我还没有这么玩过。
chxchxkkk 2020-06-28
  • 打赏
  • 举报
回复
不管你传入的参数是几,return 1.0决定了返回值只有这一个
棉猴 2020-06-28
  • 打赏
  • 举报
回复
double sqrt(double a)
{
    return 1.0;//------这里返回的是1.0,所以结果是1
}
r123ed 2020-06-28
  • 打赏
  • 举报
回复
引用 2 楼 棉猴 的回复:
double sqrt(double a)
{
    return 1.0;//------这里返回的是1.0,所以结果是1
}
我没明白的地方是
    using std::sqrt;
    double     a = sqrt(4.0);
如果没有自定义sqrt函数原型,用默认库里的sqrt,结果应该是2,这里为什么名称一模一样的两个函数没有报错,而且用了 using std::sqrt , 不应该是调用默认的sqrt么?
JieYangLCZN 2020-06-28
  • 打赏
  • 举报
回复
😇子函数返回的就是1.0呀。
Simple-Soft 2020-06-27
  • 打赏
  • 举报
回复
你开玩笑吗?

64,653

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧