在给定值处创建溢出

时间:2015-01-05 00:23:34

标签: c++ c position overflow counter

如果无符号字节溢出,则从255变为0,反之亦然-1给出255.

是否有可能让它溢出例如200? 不使用if语句。

3 个答案:

答案 0 :(得分:1)

溢出非常简单:

unsigned int a = 150, b = 150;
a += b; // do an operation
a %= 200; // wrap it

然而,由于下溢,它有点难度(请参阅orlp的答案)。

如果你多次使用这个变量,为了减少它的错误,在带有运算符重载的C ++中,你可以创建一个类,它模拟一个整数类型,它在每次运算后都会包含运算符重载。

答案 1 :(得分:1)

模运算符可以执行您想要的操作,并为负值提供一些技巧:

int wrap(int x, int n) {
    return x < 0 ? ((x % n) + n) % n : x % n;
}

// wrap(205, 200) == 5
// wrap(-1, 200) == 199

答案 2 :(得分:0)

除非你愿意学习集会,否则出于几个原因这样的行动是不可能的。

  1. 所有类型如char,short,int等都是由解析器构建并预定义的。
  2. 200不是2的幂;计算机代表二进制数字。
  3. 注意:只有你想要隐式溢出时,才会出现这种情况; modulas允许你做明确的溢出。