Partilhar via


Coerção por operadores bit a bit

Os operadores bit a bit nesta versão do JScript são totalmente compatível com os operadores bit a bit em versões anteriores do JScript.Além disso, os operadores de JScript também podem ser usados nos novos tipos de dados numéricos.O comportamento dos operadores bit a bit depende a representação binária de dados, portanto, é importante entender como os operadores de forçar os tipos de dados.

Três tipos de argumentos podem ser passados para operadores bit a bit: variáveis de early limite, variáveis de ligação tardia e dados literal.Early limite variáveis são variáveis definidas com uma anotação de tipo explícito.Atrasado-limite variáveis são variáveis do tipo Object que contêm dados numéricos.

AND bit a bit (&) OR (|) e XOR Operators (^)

Se qualquer operador for atrasado-limite ou se ambos os operandos são literais, ambos os operandos são forçados para int (sistema.Int32), a operação é executada, e o valor retornado é um int.

Se ambos os operandos forem early limite ou se um operando é literal e o Outros é early limite, mais etapas são executadas.Ambos os operandos são forçados para um tipo determinado por duas condições:

  • Se nenhuma das operando é integral, ambos os operandos são forçados para int.

  • Se houver apenas um operando inteiro, o operando nonintegral é forçado para o tipo integral ou forçado para int, seja qual for o tipo é mais longo.

  • Se um operando for maior, o tipo de para o qual o operando é forçado tem o mesmo comprimento sistema autônomo o operando mais tempo.

  • Se qualquer operador não for assinado, o tipo ao qual o operando é forçado é não assinado.Caso contrário, o tipo de imposto é assinado.

Os operandos são, em seguida, forçados para o tipo apropriado, a operação bit a bit é executada e o resultado é retornado.O tipo de dados do resultado é a mesma sistema autônomo o tipo dos operandos coagidos.

Ao usar um literal inteiro com um operador bit a bit e no início-limite variável, o literal será interpretado sistema autônomo qualquer um int, longo, ulong, ou duplo, dependendo de qual é o tipo de menor que pode representar o número.Literal decimal valores são forçados para duplo.O tipo de dados de literal poderá sofrer ainda mais a coerção de acordo com as regras descritas acima.

Bit a bit do NOT (~) operador

Se o operando for atrasado-limite, ponto flutuante, ou um literal, ele é forçado para int (sistema.Int32), a operação não é executada, e o valor retornado é um int.

Se o operando for early limite integral tipo de dados, a operação não é executada e o tipo de retorno é o mesmo tipo do operando.

Bit a bit Left deslocar (<), Right deslocar Operators (>)

Se o operando esquerdo é atrasado-limite, ponto flutuante, ou um literal, ele é forçado para um int (sistema.Int32).Caso contrário, o operando esquerdo é tipo de dados integral early limite e nenhum coerção é executada.O operando da direita sempre é forçado para um tipo de dados.O deslocar operação é executada em seguida, nos valores coagidos e o resultado retornado tem o mesmo tipo de operando esquerdo (se early-limite) ou sistema autônomo digitar int.

deslocar direita não assinado Operators (>)

Se o operando esquerdo for ligação tardia, ponto flutuante, ou um literal, ele é forçado para um uint (sistema.UInt32).Caso contrário, o operando esquerdo é tipo early-limite dados integral e é forçado a um tipo não assinado do mesmo dimensionar.Por exemplo, um int pode ser forçado para uma uint. O operando da direita sempre é forçado para um tipo de dados.O deslocar operação é executada em seguida, em valores coagidos e o resultado retornado tem o mesmo tipo que o operando esquerdo coagido (se early-limite) ou sistema autônomo digitar uint.

O resultado do deslocamento à direita não assinado sempre é pequeno o suficiente para ser armazenado na versão assinada do tipo de retorno sem estouro.

Consulte também

Conceitos

Precedência de operador

Conversão de tipo

Coerção no JScript

Dados numéricos

Outros recursos

Operadores de JScript