[英]Implementation of ceil function in C
我有两个关于ceil()
函数的问题..
ceil()
函数在C中实现。如果我使用ceil(3/2)
,它可以正常工作。 但是当我使用ceil(count/2)
,如果count的值是3,那么它会给出编译时错误。
/tmp/ccA4Yj7p.o(.text+0x364):在函数
FrontBackSplit': : undefined reference to
ceil'colle2:ld返回1退出状态
如何在第二种情况下使用ceil函数? 请建议。
如何在C中实现自己的ceil功能。请提供一些基本指导。
谢谢。
试试这个:
#define CEILING_POS(X) ((X-(int)(X)) > 0 ? (int)(X+1) : (int)(X))
#define CEILING_NEG(X) ((X-(int)(X)) < 0 ? (int)(X-1) : (int)(X))
#define CEILING(X) ( ((X) > 0) ? CEILING_POS(X) : CEILING_NEG(X) )
查看链接以获取评论,证明和讨论: http : //www.linuxquestions.org/questions/programming-9/ceiling-function-c-programming-637404/
ceil()
函数在数学库libm.so
。 默认情况下,链接器在通过gcc前端调用时不会链接到此库。 要链接到该库,请在命令行上将-lm
传递给gcc:
gcc main.c -lm
ceil函数的原型是:
double ceil(double)
我的猜测是你的变量count
的类型不是double类型。 要在C中使用ceil,你会写:
#include <math.h>
// ...
double count = 3.0;
double result = ceil(count/2.0);
在C ++中,您可以使用<cmath>中的std::ceil
; 重载std :: ceil以支持多种类型:
#include <cmath>
// ...
double count = 3.0;
double result = std::ceil(count/2.0);
double ceil (double x) {
if (x > LONG_MAX) return x; // big floats are all ints
return ((long)(x+(0.99999999999999997)));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.