如果无符号字节溢出,则从255变为0,反之亦然-1给出255.
是否有可能让它溢出例如200? 不使用if语句。
答案 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)
除非你愿意学习集会,否则出于几个原因这样的行动是不可能的。
注意:只有你想要隐式溢出时,才会出现这种情况; modulas允许你做明确的溢出。