Это вопрос порядка операций.Если вы добавите круглые скобки вокруг логических операций, то код имеет смысл:
#include<iostream>
using namespace std;
int main()
{
cout << (-1 && 0) << endl; //output is -1
cout << (0 && -1) << endl; //output is 0
return 10;
}
output:
0
0
В исходном коде символы << и -1 оцениваются перед-1 && 0. </p>
Следовательно, -1 выводится из первой строки, а 0 - из второй.