Pergunta
Eu sou muito positivo sobre isso, mas apenas para estar no lado seguro:
Será que a garantia padrão C que e correntes (A && B && ...) serão avaliadas da esquerda para a direita, e que a avaliação vai parar logo que há um 0?
Mesma pergunta para OR. (Assim que há uma 1)
contagem Can I sobre isso para outros idiomas além de estilo C?
É seguro código:
if (somePtr!=NULL && somePtr->someMember==123)
{
...
}
Solução
Sim, é garantido para C, C ++ e C #. O mesmo vale para o Delphi com "avaliação curcuit curta" habilitado.
Este é um comportamento numerosas linhas de código dependem para este momento.
Outras dicas
Sim, ele é padronizado por ambos C e C ++.
Sim, as suas suposições sobre a ordem das operações em C estão corretas e o trecho de código irá funcionar como pretendido. Gostaria de ter outras línguas "de estilo C" numa base caso-a-caso.
Sim, é verdade.
Eu tenho visto pessoas que pensavam que era claro, e substituir && com esta forma:
if (a)
if (b)
if (c)
if (d) {
}
Pessoalmente, penso que é meio feio.