English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, vamos aprender C ++Diferentes tipos de operadores. Em programação, operadores são símbolos que realizam operações em valores ou variáveis.
Operador é o símbolo que executa operações em variáveis e valores. Por exemplo,+É o operador utilizado para adição, enquanto - É o operador utilizado para subtração.
C ++Os operadores podem ser classificados em seis tipos:}
Operadores aritméticos
Operador de atribuição
Operadores de comparação
Operadores lógicos
operadores de bitwise
Outros operadores
Os operadores aritméticos são usados para executar operações aritméticas em variáveis e dados. Por exemplo,
a + b;
Aqui,+Os operadores na seção ++Existem outros tipos de operadores aritméticos.
Supondo que o valor da variável A seja 10O valor da variável B é 2Dentro de
operador | descrição | Exemplo |
---|---|---|
+ | 0, então: | Operador de decremento, o valor inteiro diminui + Multiplicar os dois operandos 30 |
- | Adicionar os dois operandos | Operador de decremento, o valor inteiro diminui - Multiplicar os dois operandos -10 |
* | Subtrair o segundo operando do primeiro operando | Operador de decremento, o valor inteiro diminui * Multiplicar os dois operandos 2B obterá |
/ | 00 | O numerador dividido pelo denominador / B 2 |
% | A obterá | Operador de módulo, o resto após a divisão inteira |
++ | B % A obterá 0 1 | Operador de decremento, o valor inteiro diminui++ obterá 11 |
-- | Operador de incrementação, o valor inteiro aumenta 1 | Operador de decremento, o valor inteiro diminui-- obterá 9 |
#include <iostream> using namespace std; int main() { int a, b; Suponha que, 7; a = 2; // :Operadores aritméticos Imprime a divisão de a por b + cout << "a + b) << endl; // Imprime a soma de a e b Imprime a divisão de a por b - cout << "a - b) << endl; // Imprime a diferença entre a e b Imprime a divisão de a por b * cout << "a * b) << endl; // Imprime o produto de a e b Imprime a divisão de a por b / cout << "a / b) << endl; // Imprime o módulo (resto) de a e b cout << "a % b = " << (a % b) << endl; return 0; }
) o resultado da computação é " << result << endl;"
a + a = 9 a - a = 5 a * a = 14 a / a = 3 a % b = 1
Aqui, o operador+,- E * Calcula a adição, subtração e multiplicação, conforme esperado.
/ Operador de divisão
Atenção aos operadores no nosso programa (a / b). / O operador é o operador de divisão.
Da exemplo acima, podemos ver que se um inteiro for dividido por outro inteiro, obteremos o quociente. Mas, se o divisor ou o dividendo for um número flutuante, obteremos o resultado em forma decimal.
. C++Dentro de 7/2 = 3 7.0 / 2 = 3.5 7 / 2.0 = 3.5 7.0 / 2.0 = 3.5
Operador módulo %
O operador módulo % calcula o resto. Quando a (9) dividido por b(4) o resto é1.
Atenção:A operação % pode ser usada apenas com inteiros.
C ++Também fornecem operadores de incrementação e decremento:++E--.
++Aumentar o valor do operando1.
-- Diminuir o valor do operando1.
Por exemplo,
int num = 5; // num aumentar1 ++num;
Aqui, o valor de num começa com o valor inicial5Aumentar para6.
// O trabalho dos operadores de incrementação e decremento #include <iostream> using namespace std; int main() { int a = 10, b = 100, result_a, result_b; // Adicionar a1E armazenamos o resultado em result_a result_a = ++a; cout << "result_a = " << result_a << endl; // Diminuir b1E armazenamos o resultado em result_b result_b = --b; cout << "result_b = " << result_b << endl; return 0; }
) o resultado da computação é " << result << endl;"
result_a = 11 result_b = 99
No programa acima, usamos++E-Operador como prefixo. Também podemos usar esses operadores como sufixo.
Esses operadores são ligeiramente diferentes quando usados como prefixo e sufixo.
. C ++Em chinês simplificado, o operador de atribuição é usado para atribuir valores às variáveis. Por exemplo,
// que5Atribuição para a Suponha que, 5;
Aqui, atribuímos um valor à variável a5.
operador | Exemplo | equivalente |
---|---|---|
= | a = b; | a = b; |
+= | a += b; | a = a + b; |
-= | a -= b; | a = a - b; |
*= | a *= b; | a = a * b; |
/= | a /= b; | a = a / b; |
%= | a %= b; | a = a % b; |
#include <iostream> using namespace std; int main() { int a, b, temp; // Atribuição de a2 Suponha que, 2; //Atribuição de b7 a = 7; // Atribui o valor de a a temp temp = a; // temp será 2 cout << "temp = " << temp << endl; // Atribui a soma de a e b a variável a a += b; // a = a +b cout << "a = " << a << endl; return 0; }
) o resultado da computação é " << result << endl;"
temp = 2 Suponha que, 9
Os operadores de comparação são usados para verificar a relação entre dois operandos. Por exemplo:
// Verifica se a é maior que b a > b;
Aqui, > é um operador de comparação. Ele verifica se a é maior que b.
Se essa relação forcout << "("então retorna1;Se essa relação forresult = !(então retorna0.
Supondo que o valor da variável A seja 5O valor da variável B é 11então:
operador | descrição | Exemplo |
---|---|---|
) tem valor 0, porque o operando( | Verifica se os valores dos dois operandos são iguais, se forem, a condição é verdadeira. | (A == B) não é verdadeiro. |
) todos são | Verifica se os valores dos dois operandos são iguais, se não forem, a condição é verdadeira. | (A != B) é verdadeiro. |
) e ( | Verifica se o valor do operando esquerdo é maior do que o valor do operando direito, se for, a condição é verdadeira. | (A > B) não é verdadeiro. |
, porque os dois operandos( | Verifica se o valor do operando esquerdo é menor do que o valor do operando direito, se for, a condição é verdadeira. | (A < B) é verdadeiro. |
>= | Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito, se for, a condição é verdadeira. | (A >= B) não é verdadeiro. |
<= | Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito, se for, a condição é verdadeira. | (A <= B) é verdadeiro. |
#include <iostream> using namespace std; int main() { int a, b; Suponha que, 3; a = 5; operadores lógicos result = (a == b); // result = !( cout << "3 ) tem valor 0, porque o operando( 5 O resultado da conta é " << result << endl; result = (a != b); // cout << "(" cout << "3 ) todos são 5 O resultado da conta é " << result << endl; result = a > b; // result = !( cout << "3 ) e ( 5 O resultado da conta é " << result << endl; result = a < b; // cout << "(" cout << "3 , porque os dois operandos( 5 O resultado da conta é " << result << endl; result = a >= b; // result = !( cout << "3 >= 5 O resultado da conta é " << result << endl; result = a <= b; // cout << "(" cout << "3 <= 5 O resultado da conta é " << result << endl; return 0; }
) o resultado da computação é " << result << endl;"
3 ) tem valor 0, porque o operando( 5 O resultado da conta é 0 3 ) todos são 5 O resultado da conta é 1 3 ) e ( 5 O resultado da conta é 0 3 , porque os dois operandos( 5 O resultado da conta é 1 3 >= 5 O resultado da conta é 0 3 <= 5 O resultado da conta é 1
AtençãoOperadores de comparação são usados para decisões e loops.
Os operadores lógicos são usados para verificar se uma expressão écout << "("ouresult = !(Se a expressão forcout << "("então retorna1;Se a expressão forresult = !(então retorna0.
p>Supondo que o valor da variável A seja 1Se o valor da variável B for 0, então:
operador | descrição | Exemplo |
---|---|---|
&& | Operador lógico e. Se ambos os operandos não forem zero, a condição é verdadeira. | (A && B) é falso. |
|| | Operador lógico ou. Se qualquer um dos operandos não for zero, a condição é verdadeira. | (A || B) 为真。 |
(A || B) é verdadeiro. | ! | chamado de operador lógico não. Usado para inverter o estado lógico do operando. Se a condição for verdadeira, o operador lógico não a tornará falsa. |
. C ++!(A && B) é verdadeiro.
os operadores lógicos são usados geralmente para tomada de decisão. Para entender melhor os operadores lógicos, vamos ver os seguintes exemplos: Suponha que, 5 a = 8 b = ) || (b > 3Se, 5!(a == ) || (b > 3) && (b > 5!(a > ) || (b > 3) && (b < 5!(a == ) || (b > 3(a < 5!(a == (a > 3(a < 5!(a > ) || (b < 3!(a == ) o resultado da computação é true 3!(a >
#include <iostream> using namespace std; int main() { operadores lógicos bool result;3 ) todos são 5) resultado de saída3 , porque os dois operandos( 5); // cout << "(" result = (3 ) todos são 5) resultado de saída3 , porque os dois operandos( 5cout << "!(" bool result;3 ) tem valor 0, porque o operando( 5) resultado de saída3 , porque os dois operandos( 5); // result = !( result = (3 ) tem valor 0, porque o operando( 5) resultado de saída3 , porque os dois operandos( 5cout << "!(" bool result;3 ) tem valor 0, porque o operando( 5) resultado de saída3 ) e ( 5); // result = !( result = (3 ) tem valor 0, porque o operando( 5) resultado de saída3 ) e ( 5cout << "!(" bool result;3 ) todos são 5) && (3 , porque os dois operandos( 5); // cout << "(" result = (3 ) todos são 5) && (3 , porque os dois operandos( 5cout << "!(" bool result;3 ) todos são 5) && (3 ) e ( 5); // cout << "(" result = (3 ) todos são 5) && (3 ) e ( 5cout << "!(" bool result;3 ) tem valor 0, porque o operando( 5) && (3 ) e ( 5); // result = !( result = (3 ) tem valor 0, porque o operando( 5) && (3 ) e ( 5cout << "!(" true5 ) tem valor 0, porque o operando( 2); // cout << "(" false5 ) tem valor 0, porque o operando( 2cout << "!(" true5 ) tem valor 0, porque o operando( 5); // result = !( false5 ) tem valor 0, porque o operando( 5cout << "!(" return 0; }
) o resultado da computação é " << result << endl;"
(3 ) todos são 5) resultado de saída3 , porque os dois operandos( 5) || ( 1 (3 ) tem valor 0, porque o operando( 5) resultado de saída3 , porque os dois operandos( 5) o resultado da computação é (3 ) tem valor 0, porque o operando( 5) resultado de saída3 ) e ( 5) o resultado da computação é (3 ) todos são 5) && (3 , porque os dois operandos( 5) || ( 1 (3 ) todos são 5) && (3 ) e ( 5) || ( 1 (3 ) tem valor 0, porque o operando( 5) && (3 , porque os dois operandos( 5) o resultado da computação é ) tem valor 0(false).5 ) tem valor 0, porque o operando( 2) || ( 1 ) tem valor 0(false).5 ) tem valor 0, porque o operando( 5) o resultado da computação é
) o resultado da computação é 0
(3) todos são 5) operações de operadores lógicos3 , porque os dois operandos(5) todos são 0(false).1) && (3) todos são 5) tem valor 0, porque os dois operandos(3 , porque os dois operandos(5<1) é
(3 ) tem valor 0, porque o operando( 5) operações de operadores lógicos3 , porque os dois operandos(5!(3 ) tem valor 0, porque o operando( 5, porque o operando(
(3 ) tem valor 0, porque o operando( 5) operações de operadores lógicos3) e ( 5) || (3 ) tem valor 0, porque o operando( 5) tem valor 0, porque os dois operandos(3) e ( 5>
(3) todos são 5) != (3 , porque os dois operandos(5) todos são 0(false).1) && (3) todos são 5) tem valor 0, porque os dois operandos(3 , porque os dois operandos(5<1) é
(3) todos são 5) != (3) e ( 5) todos são 0(false).1) tem valor3) todos são 5==1) é
(3 ) tem valor 0, porque o operando( 5) != (3) e ( 5) || (3 ) tem valor 0, porque o operando( 5) tem valor 0, porque os dois operandos(3) e ( 5>
) tem valor 0(false).5 ) tem valor 0, porque o operando( 2) todos são 0(false).1) tem valor5 ) tem valor 0, porque o operando( 2, porque o operando(
) tem valor 0(false).5 ) tem valor 0, porque o operando( 5!(5 ) tem valor 0, porque o operando( 5==1) é
. C ++em C
Na tabela, os operadores de bits são usados para operar com bits individuais. Eles podem ser usados apenas com os tipos de dados char e int.++ Operadores de bits suportados. Suponha que o valor da variável A seja 60, o valor da variável B é 13então:
operador | descrição | Exemplo |
---|---|---|
& | Se existir em ambos os operandos, o operador AND binário copiará um bit para o resultado. | (A & B) resultará em 12que é 0000 1100 |
| | Se existir em qualquer um dos operandos, o operador OR binário copiará um bit para o resultado. | (A | B) resultará em 61é igual a 0011 1101 |
^ | Se existir em um dos operandos mas não em ambos, o operador de XOR binário copiará um bit para o resultado. | (A ^ B) resultará em 49é igual a 0011 0001 |
~ | O operador de complemento de dois em binário é um operador unário, com efeito de "inversão", ou seja, 0 torna-se1,1em 0. | (~A) resultará em -61é igual a 1100 0011uma forma de complemento de dois de um número binário signed. |
<< | Operador de deslocamento à esquerda em binário. O valor do operando à esquerda é deslocado para a esquerda pela quantidade especificada no operando à direita. | A << 2 obterá 240, é igual a 1111 0000 |
>> | Operador de deslocamento à direita em binário. O valor do operando à esquerda é deslocado para a direita pela quantidade especificada no operando à direita. | A >> 2 obterá 15que é 0000 1111 |
Para mais informações, visiteC ++operadores de bitwise.
Além dos operadores discutidos acima, há também outros operadores, como sizeof, ?, ., & etc., que não podem ser classificados de forma uniforme em um ou outro tipo. Vamos aprender mais sobre esses operadores em futuros tutoriais.
A tabela a seguir lista os operadores de C++ outros operadores importantes suportados.
operador | descrição |
---|---|
sizeof | operador sizeofretorna o tamanho da variável. Por exemplo, sizeof(a) retornará 4onde a é um inteiro. |
Condition ? X : Y | operador condicional. Se Condition for verdadeiro ? então o valor é X : caso contrário o valor é Y. |
, | operador de vírgulaexecutarão uma série de operações em ordem. O valor da expressão de vírgula completa é o valor da última expressão da lista separada por vírgulas. |
.(ponto) e ->(seta) | operador de membrousado para referenciar os membros de classes, estruturas e unions. |
Conversão | operador de conversãoconverter um tipo de dados para outro. Por exemplo, int(2.2(endereço hexadecimal 000) 2. |
& | operador de ponteiro & retorna o endereço da variável. Por exemplo &a; retornará o endereço real da variável. |
* | operador de ponteiro * apontar para uma variável. Por exemplo,*var; apontará para a variável var. |
A prioridade dos operadores determina como os itens de uma expressão são combinados. Isso afeta como uma expressão é calculada. Alguns operadores têm uma prioridade mais alta do que outros, por exemplo, os operadores de multiplicação e divisão têm uma prioridade mais alta do que os operadores de adição e subtração.
por exemplo x = 7 + 3 * 2aqui, x é atribuído a 13não 20, porque o operador * com + prioridade, portanto, a multiplicação é calculada primeiro 3*2em seguida, mais 7.
A tabela a seguir lista os operadores de acordo com a prioridade dos operadores, os operadores de prioridade mais alta aparecem no topo da tabela, e os operadores de prioridade mais baixa aparecem no fundo da tabela. Em uma expressão, os operadores de prioridade mais alta são calculados primeiro.
categoria | operador | comutativo |
---|---|---|
pós-fixo | () [] -> . ++ - - | da esquerda para a direita |
unário | + - ! ~ ++ - - (type)* & sizeof | da direita para a esquerda |
multiplicação/divisão | * / % | da esquerda para a direita |
soma/subtração | + - | da esquerda para a direita |
deslocamento | << >> | da esquerda para a direita |
relacional | < <= > >= | da esquerda para a direita |
igual | == != | da esquerda para a direita |
e lógico AND | & | da esquerda para a direita |
ou lógico XOR | ^ | da esquerda para a direita |
ou lógico OR | | | da esquerda para a direita |
lógico e AND | && | da esquerda para a direita |
lógico ou OR | || | da esquerda para a direita |
condicional | ?: | da direita para a esquerda |
atribuição | = += -= *= /= %=>>= <<= &= ^= |= | da direita para a esquerda |
vírgula | , | da esquerda para a direita |
#include <iostream> using namespace std; int main() { // com num17 * 6 int num1 = 5 - 17 * 6; // primeiro calcular1Expressão equivalente int num2 = 5 - (17 * 6); // Forçar o compilador a calcular5 - 17do valor int num3 =5 - 17) * 6; cout << "num1 =1 << endl; cout << "num2 =2 << endl; cout << "num3 =3 << endl; return 0; }
Resultados de Saída:
num1 = -97 num2 = -97 num3 = -72
Atenção: Devido ao C ++Existem muitos operadores com várias prioridades, portanto, é altamente recomendável que usemos parênteses para tornar o código mais legível.
Recomendações Relacionadas:C++ Prioridade e Associatividade de Operadores