首页 > 解决方案 > 在for循环中返回一个大数字

问题描述

我正在解决一个问题并陷入了这个愚蠢的错误,我无法解决它。基本上我正在使用 for 循环并从流中读取一个字符。当字符为“-”时,我将整数减一,当字符为“+”时,我将整数加一。我使用无符号整数,因为我不想要负数。这是一个代码示例:

char x;
unsigned int number = 0;
for (int i = 0; i < n; i++){
    cin >> x;
    if (x == '-'){
        number--;
    }else if (x == '+'){
        number++;
    }
}
cout << number;

它显示了一个类似于 4294967293 的数字。

问题出在哪里?

标签: c++algorithm

解决方案


unsigned这是由于数据类型的环绕。既然是unsigned,就不能是负数。因此,求反运算环绕并产生 32 位整数的边界值。

代替

unsigned int number = 0;

int number = 0;

推荐阅读