在C中实现ceilfunction
我有两个关于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中实现自己的ceilfunction。请提供一些基本指导。
谢谢。
ceil()
函数在数学库libm.so
。 默认情况下,链接器在通过gcc前端调用时不会链接到此库。 要链接到该库,请在命令行上将-lm
传递给gcc:
gcc main.c -lm
试试这个:
#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) )
查看链接以获取意见,certificate和讨论: http : //www.linuxquestions.org/questions/programming-9/ceiling-function-c-programming-637404/
ceil函数的原型是:
double ceil(double)
我的猜测是你的变量count
的类型不是double类型。 要在C中使用ceil,你会写:
#include // ... double count = 3.0; double result = ceil(count/2.0);
在C ++中,您可以使用std::ceil
; 重载std :: ceil以支持多种类型:
#include // ... 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))); }