加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 递减和模数 – 如何在一行代码中递减负值

发布时间:2020-12-16 09:52:35 所属栏目:百科 来源:网络整理
导读:我发现增加有限变量的方法非常温和,只需: ++i %= range; 不幸的是,这个技巧不适用于减量,因为-1%v == -1. 我怎样才能在C中改进这个? 解决方法 为了避免负模数行为,您可以先将其设为正数: i = (i - 1 + range) % range; 但是,如果范围大于INT_MAX的一半,
我发现增加有限变量的方法非常温和,只需:

++i %= range;

不幸的是,这个技巧不适用于减量,因为-1%v == -1.

我怎样才能在C中改进这个?

解决方法

为了避免负模数行为,您可以先将其设为正数:

i = (i - 1 + range) % range;

但是,如果范围大于INT_MAX的一半,这是不好的. (或者我的任何类型).

这似乎更简单:

i = (i ? i : range) - 1;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读