Если вычисляется выражение с логическим оператором & , оба операнда оцениваются.Затем оператор & применяется к операнду.
Когда вычисляется выражение с оператором && , вычисляется первый операнд.Если первый операнд оценивается как false, оценка второго операнда пропускается.
Если первый операнд возвращает значение true, тогда второй операнд оценивается.Если второй операнд возвращает значение true, тогда оператор && применяется к первому и второму операндам.
Аналогично для |и ||.