VS2013 C++有多个重载函数“sqrt”实例与参数列表匹配

来源:互联网 发布:列车网络控制系统组成 编辑:程序博客网 时间:2024/05/16 09:26

7744问题

#include<stdio.h>#include<math.h>int main(){    for (int a = 1; a <= 9; a++)        for (int b = 0;b<= 9; b++)        {        int n = a * 1100 + b * 11;        int m = floor(sqrt(n) + 0.5);        if (m*m == n)            printf("%d\n", n);        }    return  0;}

这里写图片描述
在vs2013中遇到这种问题
分析在C++中sqrt有三种类型,参数分别为double,float,long double。n定义的参数类型是int型,而sqrt()中应该试用double型或者float型,编译器不知道我们要调用哪一个sqrt类型。因此,修改为sqrt(n*1.0)

#include<stdio.h>#include<math.h>int main(){    for (int a = 1; a <= 9; a++)        for (int b = 0;b<= 9; b++)        {        int n = a * 1100 + b * 11;        int m = floor(sqrt(n*1.0) + 0.5);        if (m*m == n)            printf("%d\n", n);        }    return  0;}

这里写图片描述
这里写图片描述

阅读全文
1 0
原创粉丝点击