Объясните пожалуйста то, что записано в седьмой строке программы на C++

01.01.2001

Объясните пожалуйста то, что записано в седьмой строке программы на C++.
Что означает знак вопроса, почему YES и NO через двоеточие, и т. д. . Как можно записать вывод по другому?
#include
using namespace std;
int main()
{
int n;
cin >>n;
cout << ( ( n & ( n - 1 ) ) ? "NO" : "YES" );
return 0;
}

  • ( ( n & ( n - 1 ) ) ? "NO" : "YES" )
    Воспринимай как:
    if(( n & ( n - 1 )) "NO";
    else
    "YES";
  • Операция "УСЛОВИЕ"
    Источник: http://ru.wikipedia.org/wiki/Тернарная_условная_операция
  • есть ли совпадение по разрядам у масок, представляющими собой два соседних целых числа
  • (условие) ? если_условие_выполняется : если_условие_не_выполняется

    Это такой синтаксис ветвления в Си++.

Вас заинтересует