Я пытаюсь округлить целое число до ближайшего кратного числа.
Скажем, число равно 80
.
Есть ли более эффективный способ сделать эточем x -= (x % the_number)
?
Вот пример:
#include <stdio.h>
int main(void)
{
int x = 191;
int the_number = 80;
printf("x == %d\n", x);
x -= (x % the_number);
printf("x - (x %% the_number) == %d\n", x);
return 0;
}
Вот еще один пример.Это не полностью рабочая программа, как предыдущая, но она понятнее того, что я пытаюсь сделать:
#define LIGHT_GRAY 0x0700
#define COLUMNS 80
void pm_putchar(int c, void **ptr)
{
c &= 0xff;
c |= LIGHT_GRAY;
if(c == '\n' | LIGHT_GRAY)
*ptr += COLUMNS;
else if(c == '\r' | LIGHT_GRAY)
*ptr -= (*ptr % COLUMNS);
**(short **)ptr = (short)c;
(*ptr) += 2;
}
В приведенном выше примере предположим, что *ptr
равно или выше местоположения VGAТекстовый буфер (0x0b8000
).