std::string.size() 未知行为

  • 本文关键字:未知 string size std c++
  • 更新时间 :
  • 英文 :


我希望Output 1等于Output 2,因为简单的加减法,括号应该没有区别
这是输出:

Output 1: 3
Output 2: 4294967295
Output 1: 6
Output 2: 2

我认为这与 string.size(( 有关,但我无法向自己解释这是如何发生的。也许有人可以帮助我理解这一点。

int lastPos = 0;
std::string inputString = "0b1*10*0";
while (lastPos != -1){
lastPos = inputString.find('*',lastPos+1);
if(lastPos != -1){
// -2 for 0b/ removal
// 8 Bit max Size
std::cout << "Output 1: " << lastPos-2 + 8 - (inputString.size()-2) << std::endl;
std::cout << "Output 2: " << lastPos-2 + 8 - inputString.size()-2 << std::endl;
}          
}

lastPos-2 + 8 - (inputString.size()-2)!=lastPos-2 + 8 - inputString.size()-2

lastPos-2 + 8 - (inputString.size()-2)==lastPos-2 + 8 - inputString.size()+2

因为-(-2) == +2

最新更新