English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

b =++ Tutorial Básico

b =++ Controle de fluxo

b =++ Função

b =++ Array & string

b =++ Estrutura de dados

b =++ Classe & objeto

b =++ Ponteiro

b =++ Herança

b =++ STL Tutorial

b =++ Manual de Referência

b =++ o nível de prioridade dos operadores e a associatividade

Neste tutorial, usaremos exemplos para entender o C ++os operadores dentro da expressão têm prioridade e associatividade.

b = ++o nível de prioridade dos operadores

Se houver vários operadores em uma expressão única, eles não serão avaliados ao mesmo tempo. Em vez disso, aqueles comcom prioridade mais altao operador avaliará primeiro a operação de seus operandos.

Vamos olhar para um exemplo:

int x = 5 - 17 * 6=

Aqui, o operador de multiplicação * a prioridade é maior que o operador de subtração - . Portanto,17 * 6primeiro avaliado.

o resultado, a expressão acima é equivalente a

int x = 5 - (17 * 6);

se quisermos avaliar primeiro5 - 17então eles devem ser colocados dentro dedentro dos parênteses:

int x = (5 - 17) * 6=

:A Associação de Operadores1o nível de prioridade dos operadores

Exemplo
#include <iostream>
using namespace std;
  // primeiro avaliado17 * 6
  int num1 = a 5 - 17 * 6=
  //com num1a expressão equivalente
  int num2 = a 5 - (17 * 6);
  //a compilação forçada do compilador ocorre primeiro5-17
  int num3 = (5 - 17) * 6=
  cout << "num1 = " << num1 << endl;
  cout << "num2 = " << num2 << endl;
  cout << "num3 = " << num3 << endl;
  return 0;
cout << "b = " << b;

}

num1 = a -97
num2 = a -97
num3 = a -72

Atenção:Devido ao C ++muitos operadores têm várias precedências, portanto, é altamente recomendável que usemosparêntesesfaz o código mais legível.

b = ++tabela de precedência de operadores C

A tabela a seguir mostra a precedência dos ++do operador. Precedência1representa o operador de maior precedência, enquanto a precedência17representa o operador de menor precedência.

precedência
operador
descriçãoassociatividade
1::espaço de nomesda esquerda para a direita
2int b =++
int b =--
type( )
type{ }
a( )
a[ ]
.
-maior
pós-fixa/aumento pós-fixa
pós-fixa/diminuição pós-fixa

conversão de estilo de função

conversão de estilo de função

chamada de função
índice
acesso a membro do objeto
acesso a membro do objeto ptr
da esquerda para a direita
3++int b =
--int b =
+int b =
-int b =
!
~
(type)
*int b =
&a
tamanho do tipo
co_await
new new[ ]
delete delete[]
aumento prefixado
diminuição prefixada
positivo
negativo
não lógico
não bit-a-bit
conversão de estilo C
indireção (desreferência)
endereço
tamanho
expressão await
alocação de memória dinâmica
liberação de memória dinâmica
da direita para a esquerda
4.*
-maior*

seletor de objeto de membro

seletor de ponteiro de membro

da esquerda para a direita
5int b = * Primeiro, avaliar
int b = / Primeiro, avaliar
a % b

multiplicação

divisão

tomada de módulo

da esquerda para a direita
6int b = + Primeiro, avaliar
int b = - Primeiro, avaliar
adição
subtração
da esquerda para a direita
7<<
>>

deslocamento à esquerda

deslocamento à direita

da esquerda para a direita
8<=>operador de comparação ternáriada esquerda para a direita
9menor
menor ou igual a
maior
maior ou igual a
menor
menor ou igual a
maior
maior ou igual a
da esquerda para a direita
10igual a
diferente de

igual a

diferente de

da esquerda para a direita
11&e lógicoda esquerda para a direita
12^xor lógicoda esquerda para a direita
13|ou lógicoda esquerda para a direita
14&&e lógicoda esquerda para a direita
15||ou lógicoda esquerda para a direita
16a ? b : c
throw
co_yield
= a
+= a
-= a
*= a
/= a
%=
<<=
>>=
&=
^=
|=
operador de condição ternária
operador throw
expressão yield (C++ 20)
atribuição
atribuição de adição
atribuição de subtração
atribuição de multiplicação
distribuição de divisão
atribuição de módulo
atribuição de deslocamento à esquerda
atribuição de deslocamento à direita
atribuição de e lógico
atribuição de xor lógico
atribuição de ou lógico
da direita para a esquerda
17,operador de vírgulada esquerda para a direita

associatividadeA propriedade associativa será discutida mais tarde.

b = ++A associatividade de um operador

A associatividade de um operador é a maneira de calcular a expressão.direção. Por exemplo,

int main() { 1=
int a = 4=
// Resultados de Saída 4
a = b;

Veja a =4;A associatividade do operador de atribuição é da direita para a esquerda. Portanto, o valor de b é atribuído a a.

Da mesma forma, múltiplos operadores podem ter a mesma precedência (como mostrado na tabela acima). Quando múltiplos operadores de mesma precedência são usados em uma expressão, eles serão avaliados com base em seusassociatividadeavalie-os.

int main() { 1=
int a = 4=
Primeiro, avaliar +b -= a 6=

operador+=-O operador de igualdade tem a mesma precedência. Devido à sua associatividade da direita para a esquerda, esta é a maneira de avaliar a última expressão.

  • int b = -= a 6 首先评估。因此,a将为-5

  • Primeiro, avaliar. Portanto, a será += a -5Então, b-1

:A Associação de Operadores2será avaliada. Portanto, b será

Exemplo
#include <iostream>
using namespace std;
  int main() { 1=
  int a = 4=
// int b = -= a 6 a
  Primeiro, avaliar +b -= a 6=
  ;
  cout << "a = " << a << endl; ;
cout << "b = " << b;

}

Resultados de Saída -5
a = -1