'x' をマッピング/ビニングできる整数 'x' と 'n' の可能な値があると仮定します。xに最も近い「n番目」の値を返す関数を持つCのエレガントな方法は何ですか?
疑似コードの例。
int x = 40;
int res;
int bins[] = { 0, 20, 80, 200 }; /* Sorting is guaranteed */
res = int_bin(x, bins);
assert(res == 20); /* 40 is closer to 20 than 80 */
x = 150;
res = int_bin(x, bins);
assert(res == 200); /* 150 is closer to 200 than 80 */
エレガントとは、if/else if/else ステートメントの束だけではないことを意味します。