C语言中的Python风格整数除法和模数

C语言中的Python风格整数除法和模数,第1张

C语言中的Python风格整数除法和模数

在较旧的C标准中没有指定带符号整数除法的舍入方向。但是,在C99中指定将其舍入为零。

这是可移植的代码,适用于所有版本的C标准和CPU架构:

int py_div(int a, int b){  if (a < 0)    if (b < 0)      return -a / -b;    else      return -(-a / b) - (-a % b != 0 ? 1 : 0);  else if (b < 0)      return -(a / -b) - (a % -b != 0 ? 1 : 0);    else      return a / b;}int py_mod(int a, int b){  if (a < 0)    if (b < 0)      return -(-a % -b);    else      return -a % b - (-a % -b != 0 ? 1 : 0);  else if (b < 0)      return -(a % -b) + (-a % -b != 0 ? 1 : 0);    else      return a % b;}

我做了一些表面测试,结果似乎和Python一样。该代码可能没有最大效率,但是一个好的C编译器可能会充分优化它,特别是如果将代码作为静态函数放在标头中。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5488243.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存