Not a duplicate of C++ for loop continue to loop even though it shouldn't
I found out that for loop continues even though the conditions are false. An example is here
int isSubstring(std::string s1, std::string s2)
{
    for (int i = 0; i < s2.size() - s1.size(); i++) {
        
    }
    return -1;
}
If I call it like isSubtring("abcd", "a"); it should've returned -1 right? But it doesn't. In Visual Studio debugger I saw the value of i goes up forever.
But, if call this
for (int i = 0; i < -3; i++) {
        std::cout << "\ni=" << i;
    }
It behaves as intended. This also applies for while loop. My question is, why is that?
Edit: removed unnecessary code
