Ari*_*pta 2 c++ string unsigned
最近,我在尝试.size()用 C++ 减去两个字符串的值时遇到了一个问题。据我所知,size()返回字符串中的字符数。假设我有 2 个字符串p,并且q,abs(p.size()-q.size())应该返回两个字符串的长度差异。但是当我运行这段代码时,它返回了一个突然很大的值。当我单独打印两者的长度或者如果我将它们的长度值存储在不同的整数中并减去它们时,它们会给我正确的答案。我还无法弄清楚为什么。
size()返回一个无符号值。较小的无符号值减去较大的无符号值会使计算下溢,从而产生较大的负值。可以把它想象成汽车里有一个“滚动”的英里或公里计数器,当你回滚到 0 之后,它就变成了 99999,这是一个很大的数字。
假设您关心负差异,解决方案就是执行static_cast<int>(p.size() - q.size())(并将其传递给abs)。
| 归档时间: |
|
| 查看次数: |
1636 次 |
| 最近记录: |