É raro eu publicar algo sobre programação neste blog, não é? Acho que na verdade este é o primeiro post de programação que não é link para algum site com dicas, técnicas ou algoritmos. Nesse breve texto, o que quero expôr são três coisas que uso no dia-a-dia. Embora básicas, nem todo mundo sabe de suas existências ou não está acostumado a usá-las no código. Portanto, se você pegar algum código meu, é provável que você encontre o seguinte:

1) Operador shift-left << e shift-right >>

Todos falam que divisão é uma operação cara para o computador, certo? Então porque não usar operadores de deslocamento de bits? Algo que uso bastante em jogos é calcular a metade da largura da tela, mas ao invés de realizar uma divisão por 2, faço um shift-right por 1.

// idem à screenWidth / 2
int halfScreenWidth = screenWidth >> 1

Pense no shift-right como uma divisão por 2^n. Como usei o valor 1 no exemplo, estou realizando uma divisão por 2^1 = 2. Caso eu precisasse de 1/4 da largura da tela, faria screenWidth >> 2.Já o shift-left é como uma multiplicação por 2^n. Mas e se eu precisar multiplicar um número por 13? Qual número que 2 elevado a esse número resulta em 13? Nenhum. Então decompomos o 13 em potências de 2:

// Multiplicar result = anyvalue * 13
// 2^3 = 8, 2^2 = 4, 2^0 = 1... 8 + 4 + 1 = 13
int result = (anyvalue << 3) + (anyvalue << 2) + anyvalue;&#91;/sourcecode&#93;
2) ++, --, +=, -=, *=, /=, etc...Em algumas linguagens de programação sei que não existem tais operadores para incremento/decremento de variáveis, mas em C/C++, Java (e ActionScript) eles existem.
&#91;sourcecode language='cpp'&#93;// Ao invés de...
anyvar = anyvar + 1;
// Podemos usar...
anyvar ++;

// Assim como...
anyvar = anyvar * 3;
// Fica...
anyvar *= 3;&#91;/sourcecode&#93;
3) Operador ternário ? (símbolo interrogação)Creio que o código abaixo é comum em alguns projetos:
&#91;sourcecode language='cpp'&#93;// Supondo que já declaramos um int counter = 0;
counter ++;
if(counter > 10) {
 counter = 0;
}

O operador ? pode substituir o if, como no código abaixo:

// Supondo que já declaramos um int counter = 0;
counter = (counter >= 10) ? 0 : counter + 1;

Pense assim. Eu quero zerar a variável counter quando ela chegar ou passar de 10. Enquanto isso não acontece, aumento seu valor de um em um. O ternário ? é como uma pergunta: “A variável counter é maior ou igual a 10? Sim, então zera ela. Não? Então aumente seu valor.” Ou seja, quando a condição antes do símbolo de interrogação for verdadeira, use o valor antes dos dois pontos. Quando for falsa, use o valor depois dos dois pontos.Note que com o operador ? verifico se counter é maior ou igual a 10, dada a ordem de execução do código.Admito que minha explicação não está detalhada e talvez seja melhor você fazer uma pesquisa para entender melhor esses conceitos. Mas espero que para os iniciantes em programação eu tenha trazido um conhecimento a mais.Atualização: leia o primeiro comentário do Vinícius nesse post, sobre os operadores ++ e — em C++. E uma coisa que ele mencionou e que eu acabei esquecendo de escrever aqui: eu acostumei a programar desse jeito (apesar que não é sempre que faço isso) porque comecei na época do MS-DOS em que realmente algumas otimizações eram válidas. Hoje há quem diga que certas otimizações ficam piores que as mesmas feitas por compiladores e eu não vou discordar disso🙂. Mas mesmo assim, ainda temos aplicações em que fazemos coisas como nos velhos tempos (por exemplo, fixed-point math para dar suporte à celulares MIDP 1.0, já que não possuem float).