& отличие от && i

В языке С каждый символ меняет результат программы, вот небольшой пример:

int i1 = (mode_ & myDef::FM_ROW_IS_CHOISED);
int i2 = ! chk_edit_InLine_Enabled->isChecked();

qDebug() << " i1 " <<  i1 << " i2 " <<  i2 << " i1 & i2 " << (i1 & i2) << " i1 && i2 " << (i1 && i2) ;

Вывод:

I1 2 i2 1 i1 & i2 0 i1 && i2 true

То есть & это побитовая операция
&& - это чисто логическое выражение, результатом которого будет true если значение больше 0 и false если значение равно 0.