Нашёл вот такой код на C++. не понимаю 10 строку, как работает && в ней?

Вот код:

#include <iostream>
using namespace std;
void solve() {
    int n, k;
    cin >> n >> k;
    string s;
    cin >> s;
    int ok = 1;
    for (int i = 0; i < k; ++i)
        ok = ok && s[i] == s[n - i - 1]; // вот тут не понимаю
    puts(ok && k * 2 < n ? "YES" : "NO");
}

int main() {
    int t; cin >> t;
    while(t--) {
        solve();
    }
}

Ответы (3 шт):

Автор решения: dahoonpao

Тут идёт сравнение условий, то есть && - логическое И. Условие будет верным если: ok = ok (Тут скорее всего ошибка, идёт присваивание) И условие s[i] == s[n - i - 1];

→ Ссылка
Автор решения: Harry
ok = ok && s[i] == s[n - i - 1]

Если ok равно false, то оно таковым и останется, если true, то станет результатом сравнения s[i] == s[n - i - 1]. Правда, я бы его переписал как

if ((ok = ok && s[i] == s[n - i - 1]) == false) break;

Просто нет смысла проверять дальше, если ok стало равно false.

→ Ссылка
Автор решения: Superproger77

&& - логическое И, && - (конъюнкция, логическое умножение) Возвращает true, если оба операнда не равны false. Возвращает false, если хотя бы один операнд равен false.

Справочник по языку С++

→ Ссылка