打印
[STM8]

调用库函数问题求助,急!急!急!

[复制链接]
785|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wwbbww15067|  楼主 | 2016-11-19 18:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wwbbww15067 于 2016-11-19 18:26 编辑

  我需要计算10的n次方,准备调用库函数pow(x,y),可是编译时提示pow函数未定义,求解!!
#include <math.h>
double y,ex;
main()
{y = 3;ex=pow(10,3);}
沙发
wwbbww15067|  楼主 | 2016-11-19 18:26 | 只看该作者
求大侠请指点!!

使用特权

评论回复
板凳
huangcunxiake| | 2016-11-19 20:14 | 只看该作者
pow() 函数用来求 x 的 y 次幂(次方),其原型为:
    double pow(double x, double y);

pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则 ret = xy。

可能导致错误的情况:
如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误。
如果底数 x 和指数 y 都是 0,可能会导致 domain error 错误,也可能没有;这跟库的实现有关。
如果底数 x 是 0,指数 y 是负数,可能会导致 domain error 或 pole error 错误,也可能没有;这跟库的实现有关。
如果返回值 ret 太大或者太小,将会导致 range error 错误。

错误代码:
如果发生 domain error 错误,那么全局变量 errno 将被设置为  EDOM;
如果发生 pole error 或 range error 错误,那么全局变量 errno 将被设置为 ERANGE。

注意,使用 GCC 编译时请加入-lm。

使用特权

评论回复
地板
huangcunxiake| | 2016-11-19 20:16 | 只看该作者
#include <stdio.h>
#include <math.h>

int main ()
{
    printf ("7 ^ 3 = %f\n", pow (7.0, 3.0) );
    printf ("4.73 ^ 12 = %f\n", pow (4.73, 12.0) );
    printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) );
    return 0;
}
______________________________________________________
输出结果:
7 ^ 3 = 343.000000
4.73 ^ 12 = 125410439.217423
32.01 ^ 1.54 = 208.036691

使用特权

评论回复
5
huangcunxiake| | 2016-11-19 20:17 | 只看该作者
弱弱的问一下楼主,明白自己哪儿错了吗?

使用特权

评论回复
6
xyz549040622| | 2016-11-20 21:33 | 只看该作者
huangcunxiake 发表于 2016-11-19 20:17
弱弱的问一下楼主,明白自己哪儿错了吗?

如果是使用问题的话,不应该提示未定义的,而是应该提示参数不匹配了。

使用特权

评论回复
7
huangcunxiake| | 2016-11-26 21:25 | 只看该作者
xyz549040622 发表于 2016-11-20 21:33
如果是使用问题的话,不应该提示未定义的,而是应该提示参数不匹配了。 ...

是头文件找不到了?

使用特权

评论回复
8
戈卫东| | 2016-11-26 22:03 | 只看该作者
STM8,有可能不支持这个函数

使用特权

评论回复
9
Stannis| | 2016-11-27 11:35 | 只看该作者
参数是double型的

使用特权

评论回复
10
米尔豪斯| | 2016-11-28 17:08 | 只看该作者
头文件没有添加进来?

使用特权

评论回复
11
309030106| | 2016-11-29 14:16 | 只看该作者
double pow(double x, double y);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝