Vamos analisar a questão:
int n = 30; // n é declarado como um inteiro de valor 30;
++n << 3 >> ( ( n > 30 ) ? 3 : 1 ) ) ==> n é incrementado em 1 valor ficando com 31;
++n << 3 >> ( ( n > 30 ) ? 3 : 1 ) ) ==> em n é executado a operação de carry (deslocamento de 3 posições para esquerda);
++n << 3 >> ( ( n > 30 ) ? 3 : 1 ) ) ==> é executado um operador ternário, se n for maior que 30, então n recebe o valor de 3, caso contrário, recebe o valor de 1; // Como n é igual a 31, recebe o valor de 3;
++n << 3 >> 3 ==> em n é executado a operação de carry (deslocamento de 3 posições para direita), pois foi o resultado do operador ternário no passo anterior;
por fim, é impresso o valor de n que é igual a 31;
O processo do carry:
valor 31 em binário, representado com 8 bits:
0 0 0 1 1 1 1 1
1 1 1 1 1 0 0 0 ( << 3 ) deslocamento 3 posições esquerda
0 0 0 1 1 1 1 1 ( >> 3 ) deslocamento 3 posições direita;