我期望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