Я считаю, что две петли ниже одинаковы, никто не знает, почему они работают по-разному в случае | s1 | > | s2 |?C++ for loop странное поведение
string s1 = "abcd";
string s2 = "abc";
int s1len = s1.length()
int s2len = s2.length()
for (int i = 0; i <= s2len - s1len; i++) {
// it will never calls (as expected, since 3 - 4 = -1)
}
for (int i = 0; i <= s2.length() - s1.length(); i++) {
// it calls once (which is strange)
}
Вы забыли (а) ',' на оба ваших длины заданий, и (б) [с ** предупреждения ** Ваш компилятор должен предоставить вам] (http://coliru.stacked-crooked.com/a/022bba8b76446e64) для возможных проблем. Если вы не видите эти предупреждения, время для проверки уровня предупреждения. – WhozCraig
Сделал это из памяти без тестирования, но полезно знать, спасибо! – user3537411