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

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

Поэтому символы начинаю дублировать, добавлять синтаксически префиксы, суффиксы и т.д. И получается красота...

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

int i1 = 2;
int i2 = 1;

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.

Также & используется для обозначения ссылки.

T&& используется в шаблонах для обозначения RValue ссылки.

А что будет дальше?..