Ir ao conteúdo
  • Cadastre-se
Guilherme Roda de Miranda

Operadores simples

Recommended Posts

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)++!

Editado por Guilherme Roda de Miranda

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

3/15 tem resto 3. Não entendi daonde você tá tirando o 30.

 

3%15 equivale a:

3-((int)(3/15))*15

  • Curtir 1

Compartilhar este post


Link para o post
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 . 

 

Editado por Mauro Britivaldo

Compartilhar este post


Link para o post
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.

Editado por Guilherme Roda de Miranda

Compartilhar este post


Link para o post
Compartilhar em outros sites

>.<

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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:

Compartilhar este post


Link para o post
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 &)

 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é só pra quando você quer continuar a conta e obter uma resposta com número quebrado. mas no caso do operador % ( que calcula o resto da divisão), ele espera que o resultado da divisão seja inteiro (sem vírgula), então não adiciona o dígito 0.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×