1

我有一个简单的 c++ 方法,可以在 cout 上打印 Ascii 字符 0=255。这里是 :

void print_ascii()
{    
  unsigned char c = 0;

  while (c < 255)    
  {
    cout << c << endl;
    c = c+1;
  }

}// end print_ascii()

int main()
{
   print_ascii();
}

上面的代码运行良好,但是当我在 (c <= 255) 尝试时溢出了字符,因为它超出了 unsigned char 符号。

我的问题是如何为这些场景(offbyone)抛出异常,因为有时很难记住类型的上限?

4

2 回答 2

0

溢出通常不会对整数“起作用”,而且肯定unsigned char会环绕。

你可以这样做:

while (c <= 255)
{
    cout << c << endl;
    int temp = c + 1;
    if (temp > 255) throw whatever_excpetion;
    c = t;
}
于 2013-01-24T00:41:44.763 回答
0

如前所述,溢出后未签名的聊天将为 0。你可以在这个做的时候使用它

unsigned char x = 0;
do{
     code;
     ++x;
} while (x!=0);

但我不确定它是否易于阅读。天真的一:

for (c = 0;true;++c){
     code;
     if (c == numeric_limits <unsigned char>:: max ()) break;
}
于 2013-01-24T01:01:35.043 回答