yago4xd:
observe que o termo HIGH é redundante. Teria como eu colocá-lo em "evidência" para que fosse utilizado apenas uma vez?
Não.
Podes, se quiseres escrever a condição como:
if (digitalRead(2) && digitalRead(3)) { // read two switches
// ...
}
Mas estás a assumir que a macro HIGH tem um valor diferente de zero.
Eu pessoalmente detesto ver código assim porque não acho que seja fácil de ler e, de certa forma, destrói a flexibilidade de usar macros, bem como criar a possibilidade de em caso de mudança de plataforma dar erro.
Já agora, se quiseres testar se ambos os pinos estavam a zero, farias:
if (!digitalRead(2) && !digitalRead(3)) { // read two switches
// ...
}
Optimizar codigo diretamente modificando ele em C, Pascal, Basic etc... não é uma boa ideia porque são linguagem "compilados". Ao seja, a fim da conta vão se tornar "asm".
Vc pode optimizar ASM, calculando tamanho e tempo de cada instrução, mas vc não sabe como o compilator C vai transformar o seu codigo.
De verdade o que vc deve fazer e tentar modificar o codigo e depois da compilaçao, ler o tamaho que indica o IDE.
Depois de testar:
if (!digitalRead(2) && !digitalRead(3))
if (digitalRead(2) && digitalRead(3))
if (digitalRead(2) == HIGH && digitalRead(3) == HIGH)
os 3 usam exatamente o mesma quantidade de memoria.
É preciso é, antes de mais saber em que dominio é feita a optimização (precisão, tamanho, memória ou rapidez) e depois implementar em C código que seja melhor nesse aspecto.
A Atmel, por via das dúvidas criou um documento para esse efeito.
bubulindo:
Já agora... é possível sim optimizar código em C.
É preciso é, antes de mais saber em que dominio é feita a optimização (precisão, tamanho, memória ou rapidez) e depois implementar em C código que seja melhor nesse aspecto.
A Atmel, por via das dúvidas criou um documento para esse efeito.