Programar em C/Operadores: diferenças entre revisões

26 bytes removidos ,  16h19min de 24 de agosto de 2010
limpeza da sintaxe utilizando AWB
(limpeza da sintaxe utilizando AWB)
 
Iremos ver que ter a++ ou ++a é diferente! Mas isso vai ser na história dos loops. (iremos ter situações tipo”++a+5” que seria a+5 mas antes fazer a+1+5.)
 
 
Mais uma nota. Em relação ao operador adição ele para além dos números também permite adicionar strings, isto é, junta a segunda string no fim da primeira string. No entanto se juntarmos um dígito com uma string isso já não é permitido.
|}
No caso de termos na mesma instrução operadores com o mesmo nível de precedência (prioridade) fazer a regra da esquerda para a direita. eg. a=8/2*4 seria 16 e não 1, porque temos a divisão está no lado esquerdo.
 
 
 
 
Mais um ponto em relação ao operador “%” módulo (modulus). Podemos fazer o módulo para números inteiros mas se tentarmos para números do tipo float (ou um deles) fica indefinido. Geralmente resulta num erro de compilação (mas isso vai depender do compilador)
 
 
Notar igualmente overflow de que já falamos (antes e depois de compilar).
 
O c++ não tem o operador expoente, no entanto, tem a função pow (de power) que está no ficheiro biblioteca standard <cmath>. a função pow() tem 2 argumentos, o primeiro para a base e o 2º para o expoente. o 1º argumento tem de ser float ou long float
 
 
 
== Operadores relacionais ==
| != || Diferente de
|}
 
 
Voçê poderia se perguntar: Como é que o computador faz essa comparação ? de onde é que ele sabe que um número A é maior que outro B?
'''Resposta''': Considere que você quisesse comparar dois dados tipo char, lembrando que um char na verdade é um número inteiro na tabela ASCII. Sendo assim suponha que gostarias de comparar o caractere 'a' que é igual a 97 na tabela ascii com o caractere 't' que é 116 na tabela; assim, ao comparar 97 com 116 o que aconteçe na memória é a comparação de 01100001 (97) com 01110100 (116) em um registrador específico, vão sendo somadas as potências de 2 da esquerda para a direita de forma que fica evidente para ele (o registrador) quem é maior. Isso é o que aconteçe quando comparamos duas strings com a função strcmp e ela retorna um número para a diferença entre elas. Esse número é justamente a diferença entre os valores da tabela ASCII entre o primeiro caractere das duas.
 
 
notar o == que é a comparação de igualdade. o = é de atribuição.
*4 != 4 false
*4 == 5 false
 
 
Eu ainda posso comparar um int com um float que isso não dá problema. ou seja com dados númericos não há problema. Comparações entre dois caracteres também não há problema pois os caracteres são números na tabela ASCII. Mas não usem para strings (pois aí estaríamos a comparar o quê, se as strings são conjunto de caracteres?)
 
Novamente existe a regra da esquerda para a direita caso haja igualdade de precedência
 
 
 
 
== Operadores lógicos ==
|-
| ! || Not || Reverses the “truth” of an expression, making a true expression false, and a false expression true.
 
|}
 
 
 
Estes operadores também são binários mas desta vez os operandos são resultados boolean, que podem advir dos operadores relacionais (comparação) pois davam valores boolean.
&&
||
 
 
cuidado!
| & || AND
|-
| &brvbar;¦ || OR
|-
| ^ || XOR (OR exclusivo)
 
== Todos os Operadores ==
 
 
Comparações de precedência entre Operadores aritméticos, relacionais e lógicos
| 18 || , || comma || Left-to-right
|}
 
 
 
== Exercícios ==
19 639

edições