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

向下取整和向上取整的有关问题

2013-01-07 
向上取整和向下取整的问题linux一站式上的问题假设变量x和n是两个正整数,我们知道x / n这个表达式的结果取

向上取整和向下取整的问题
linux一站式上的问题

假设变量x和n是两个正整数,我们知道x / n这个表达式的结果取Floor,
例如x是17,n是14,则结果是4,如果希望结果取celling应该怎么写表达式呢?

(例如x是17,n是14,着结果是5,x是16,n是4,则结果是4.)

PS:向下取整运算符称为Floor.
    向下取整运算符称为Ceiling

我写的代码:


# include "stdafx.h"

int main(void) {

   int a = 0, b = 0;

   scanf("%d %d", &a, &b);

   if(0 == a % b) {
   printf("%d\n", a / b);
   }
   else {
   printf("%d\n", a / b + 1);
   }

}


可以运行,结果好像也没什么问题,但是宋劲衫老师说只需要用到一个+号就可以了。我想不出那种方法。
不知道谁能够写出更好的代码。
[解决办法]
a / b + 1就是了,对于整数除法默认为向下取整的环境,将结果+1就是向上取整了。

不过,实际使用中想写出移植性高的代码,你就不能以向下取整作为默认行为,应该先用一段简单代码检测是哪种取整方法,再分别处理。
[解决办法]
(a + b - 1) / b

热点排行