Partilhar via


Expressões comparativas

Comparações em matéria de igualdade

As comparações de igualdade (==) e comparações de desigualdade (!=) estão atualmente limitadas aos seguintes tipos de dados: Int, BigInt, Double, String, Bool, Result, Paulie Qubit. Atualmente, não há suporte para comparações de igualdade de tipos de struct e chamáveis.

A comparação de igualdade para valores do tipo Qubit avalia se as duas expressões identificam o mesmo qubit. Não há noção de um estado quântico em Q#; A comparação de igualdade, em particular, não acessa, mede ou modifica o estado quântico dos qubits.

As comparações de igualdade para valores de Double podem induzir em erro devido a efeitos de arredondamento. Por exemplo, a seguinte comparação avalia a false devido a erros de arredondamento: 49.0 * (1.0/49.0) == 1.0.

A comparação de igualdade de matrizes e tuplas é suportada por comparações de seus itens e só é suportada se todos os seus tipos aninhados suportarem a comparação de igualdade.

A comparação de igualdade de intervalos fechados é suportada, e dois intervalos são considerados iguais se produzirem a mesma sequência de inteiros. Por exemplo, os dois intervalos a seguir

    let r1 = 0..2..5; // generates the sequence 0,2,4
    let r2 = 0..2..4; // generates the sequence 0,2,4

são considerados iguais. A comparação de igualdade de intervalos abertos não é suportada.

Comparação quantitativa

Os operadores inferior (<), inferior ou igual (<=), maior que (>) e maior que ou igual (>=) definem comparações quantitativas. Eles só podem ser aplicados a tipos de dados que suportam tais comparações, ou seja, os mesmos tipos de dados que também podem suportar expressões aritméticas .