nella prima versione
codice:
8<col<=17
8<col può assumere solo i valori 0 o 1 e quindi essendo sempre minore o uguali a 17 l'espressione risulta sempre vera.

nella seconda scriverei, per chiarezza , così
codice:
...
if ( row == 8 ) {
  if ( col > 8 && col <= 17 )
    matrix[row][col] = 1;
  else
    matrix[row][col] = 0;
}
else
    matrix[row][col] = 0;
...