首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

各位朋友好,最近小弟我在自学C++,问个有关问题

2012-02-22 
各位朋友好,最近我在自学C++,问个问题最近在自学c++,编了个简单程序.题目如下//求100~150之间的所有素数。#

各位朋友好,最近我在自学C++,问个问题
最近在自学c++,编了个简单程序.题目如下

//求100~150之间的所有素数。
#include <iostream>
#include <iomanip>
#include <cmath>
using   namespace   std;

int   main()
{
int   x,i,b;
                for(   x=100;   x <=150;   x++   )
{
b=sqrt(x);
                                for(   i=2;   i <=   b;   i++   )
if(   x%i==0   )
break;
if(i> =b+1)
cout   < <   setw(5) < <   x;
}

return   0;
}
调试时发现sqrt这个函数有三种定义,分别为long,float,double型的sqrt,我之后又把前面的变量类型做了不同的修改,根据三种定义去编译,还是没法编译成功.所以我想问下这个sqrt函数该怎么用,根据前面的变量类型该如何搭配使用.希望有朋友根据三种定义给我举下例子,谢谢啦..

[解决办法]
因为x的类型是int,而sqrt()的三种参数分别是float、double、long double.
int可以自动转换为任一一种,但是具有不确定性。故编译器报错。
可以把x定义为double类型。
[解决办法]
b=(int)sqrt(1.0*x)

1.0*x 已经将传入sqrt的参数转为浮点型
将sqrt返回的结果再强转成int的 赋值给变量b
[解决办法]
1.0*x会使x转化为double类型,然后就可以明确匹配double类型的sqrt了。楼主可以去看下类型自动转化。
[解决办法]
long double * 或 double * = sqrt(任意类型)
而那个 float * = sqrt(float *)
若要使用 int * 则需要 int * = int(sqrt(*))
* 代表变量

热点排行