Ir ao conteúdo
  • Cadastre-se

Operadores simples


Posts recomendados

1) a=15 b=3
b%=a            // b=30
a=b++           // a=30, b=31

O resultado não teria que ser 30, que é o resto da divisão de 3/15?

 

2)

int a=15

int b=2

b*=a

pintf(%d, %d, a, b,)

b=a--

printf(%d, %d, a,b)

 

O resultado não seria a=15, b=30, a'=29 b'=30?

3)

y=0

p=&y

x=*p

x=4

(*p)++;

 x--;

(*p) += x

 

A resposta é x=3 e y=4; mas não sei como fazer a partir do (*p)++!

Link para o comentário
Compartilhar em outros sites

Esmiuçamos o primeiro quest:

Q Igualdade de b%= a é  mesmo que b = b % a, a := 15; b := 3 então temos [ 3 %(módulo)15 ] = 3 e trinta está errado.

>.<

adicionado 1 minuto depois

Entendo que se o numerado for menor que o denominador 3/15 o módulo é o próprio numerado, o operador % exigi divisões inteiras.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Guilherme Roda de Miranda disse:

De acordo com a apostila o % significa o resto da visão entre os números operados. Então 3 % 15 é o resto da divisão 3/15, o qual é 30. Mas a resposta está outro valor. É possível fazer a segunda para eu entender?

Quando na apostila te faz entender que o resto de uma divisão é  %, faltou entender também que o NUMERADOR é maior que Denominador caso contrário, o resultado é o próprio NUMERADOR:

Por exemplo: 35 % 6 -> 5, porque 5 não é divisível inteiro de 6, o mesmo acontece se testarmos 5 % 6 -> 5.

 

Conclua-se que o Y % (módulo) X é o valor que não é múltiplo de X | < X, se Y for < X então o % Módulo é Y . 

 

Link para o comentário
Compartilhar em outros sites

Pessoal, 3/15 dá 0, com o resto igual a 30.  30/15 = 2. 

adicionado 5 minutos depois
1 hora atrás, Mauro Britivaldo disse:

o mesmo acontece se testarmos 5 % 6 -> 5.

No caso, o resto é 50, 5/6 é igual a 0 com resto 50. 5%6 -> 50

É possível alguém fazer a questão dois, por favor.

Link para o comentário
Compartilhar em outros sites

Nao, a 2 seria 15 30 14 15.

Quanto a questao 1, supondo que você tenha 3 balas e queira dividir entre 15 amigos, você vê que não tem como dividir igualmente com todos então resolve não dar nenhuma bala a eles. Depois disso com quantas balas você ficaria? 3 ou 30? Isso tudo é matemática, não matemágica.

Link para o comentário
Compartilhar em outros sites

Citação

É possível alguém fazer a questão dois, por favor.

b *= a;

É a mesma coisa que:
b = b * a;

Que da como resultado:
a:15 
b:30

b = a--;

Não se confunda... nessa expressão você tem 2 instruções.
1º O 'b' ganha o valor de 'a' e 2º 'a' decrementa. Certamente essa parte de decremento prefixo/pós-fixo seja sua maior duvida, porque não sabe se primeiro acontece o a-- e depois o b=a, ou primeiro  b=a e depois a--, porém o que realmente acontece é b=a e depois a--. Por que isso? Os criadores do linguagem viram 2 possiveis casos nessa expressão, pode ser que eu quisesse que 'a' decrementasse antes de atribui-lo ao 'b', ou pode ser que eu quisesse que 'a' decrementasse depois de atribui-lo. No primeiro caso(decrementar antes de atribuir) você tem a sintaxe b = --a, e no segundo caso(decrementar depois de atribuir) você tem b = a--. Então para ficar claro deixo abaixo melhor explicado:
a=15
b=30
b = --a // Primeiro 'a' decrementa e depois é atribuído ao 'b'. Ou seja.. 'a' passa a valer 14 trás decrementar primeiro e depois é atribuído ao 'b'

a=15
b=30
b = a-- // Primeiro acontece a atribuição, ou seja, 'b' toma o valor de 'a'(b=15), posteriormente 'a' decrementa(a--).
Esse ultimo é seu caso.

Lembre-se que se --(decremento) está antes da variável primeiro haverá um decremento depois a atribuição, se tiver depois é o contrario, primeiro haverá a atribuição e depois o incremento. Falou?:atirador:

Link para o comentário
Compartilhar em outros sites

Muito obrigado pela resposta da questão 2, mas ainda não compreendi em relação ao resto; o método da divisão continua assim, resolvendo 3/15 tenho 0, mas não tenho o resto 3 pois lhe acrescento o 0; há uma outra lógica na atribuição do 0. Alguém disposto a resolver a questão 3? (está difícil entender o *p e &)

 

Link para o comentário
Compartilhar em outros sites

Você sabe manusear ponteiros? A questão 3 é só isso.

como p é um ponteiro (*p) e p aponta para o endereço de y (p=&y) tudo que você fizer com *p acontece com y e vice versa.

Por exemplo, quando você faz *p++ é a mesma coisa que y++ nesse exercício.

 

 

Quanto a questão 1, por que você está acrescentando 0?

divisao.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...