c++ - 在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 的数字。
问题出在哪里?
解决方案
unsigned
这是由于数据类型的环绕。既然是unsigned
,就不能是负数。因此,求反运算环绕并产生 32 位整数的边界值。
代替
unsigned int number = 0;
和
int number = 0;
推荐阅读
- jquery - 自定义滚动事件
- swift - 以编程方式快速呈现一个新的视图控制器/以编程方式给一个类一个标识符
- ruby - 如果键有多个匹配项,如何从哈希中获取特定数据?
- accessibility - 如何强制屏幕阅读器发音?
- selenium - contextClick() 不适用于 IEWebDriver
- python - 在python中打印json数据应该反映在kibana中的json文件
- stackdriver - Stackdriver Monitoring:自定义指标问题
- php - 如何在codeignitor中显示来自MYSQL的数据?
- android - 我可以在 xml 中剪掉底层项目的背景颜色吗?
- typescript - Kendo Sortable / Integration - Grid - 特定刷新后不排序