繁体   English   中英

在C中实现ceil函数

[英]Implementation of ceil function in C

我有两个关于ceil()函数的问题..

  1. ceil()函数在C中实现。如果我使用ceil(3/2) ,它可以正常工作。 但是当我使用ceil(count/2) ,如果count的值是3,那么它会给出编译时错误。

    /tmp/ccA4Yj7p.o(.text+0x364):在函数FrontBackSplit': : undefined reference to ceil'colle2:ld返回1退出状态

    如何在第二种情况下使用ceil函数? 请建议。

  2. 如何在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM