int x;
x = (x=1) + (x=7)* (- - x);
System.out.println("Valor de x é:"+ x );
Valor de x é:50
E eu achando que conhecia um pouco de java.
:lol: :lol:
int x;
x = (x=1) + (x=7)* (- - x);
System.out.println("Valor de x é:"+ x );
Valor de x é:50
E eu achando que conhecia um pouco de java.
:lol: :lol:
retorno de atribuicao é o novo valor na maioria das linguagens…
Não entendi porque dá 50 o.o não deveria dar 43? Louds? Thingol? Alguém?
x = (x=1) + (x=7)* (- - x);
Na ordem:
x = 1 -> x = 1 + (x=7)* (- - x);
x = 7 -> x = 1 + 7* (- - x);
Se fosse (-- x) , sem espaços entre os dois “-” o terceiro parênteses daria 6.
Acho q é isso…
Exatamente isso.
Encontrei outra coisa legal em um blog estes dias.
Da pra trocar o valor de duas variaveis sem usar uma auxiliar?
Pois é eu achava que não tbm. Mas… :shock:
public class Main {
public int a;
public int b;
public static void main(String[] args) {
Main main = new Main();
main.a=654894;
main.b=444444;
main.show();
main.swap();
main.show();
}
public void show() {
System.out.println("a=="+this.a);
System.out.println("b=="+this.b);
}
public void swap(){
a=a ^ b;
b=a ^ b;
a=a ^ b;
}
}
Esse algoritmo de trocar os valores é bom mesmo. Tivemos isso como desafio numa aula de C na faculdade.
É óbvio que eu não consegui resolver por conta própria. :lol:
A função swap tb podia ser assim:
swap(){
a = a+b;
b = a-b;
a = a-b;
}
Agora uma pergunta pros mais entendidos… o que é mais barato para o processador? Soma e subtração ou exponencial?
Na minha opinião:
Soma e subtração
Tá, vcs vao achar isso uma preocupação idiota, até q é, + eh q a minha realidade me obriga a pensar que 4kb de memória é muito. ((;
[quote=bandrade]A função swap tb podia ser assim:
swap(){
a = a+b;
b = a-b;
a = a-b;
}
Agora uma pergunta pros mais entendidos… o que é mais barato para o processador? Soma e subtração ou exponencial?
Na minha opinião:
Soma e subtração
Tá, vcs vao achar isso uma preocupação idiota, até q é, + eh q a minha realidade me obriga a pensar que 4kb de memória é muito. ((;[/quote]
O operador ^ não é exponencial em Java, é o XOR (ou exclusivo) bitwise. Como esse simplesmente troca os valores dos bits que formam os números, é mais barato para o processador.
O algoritmo da soma e subtração pode dar problema quando os valores de x e y estão perto de Integer.MAX_VALUE ou Integer.MIN_VALUE.
Pense em uma coisa:
exponencial são multiplicações sucessivas.
multiplicação são somas sucessivas.
Já matou?
Ah, os espacinhos. Valeu
Ai… eu amo o Guj.
#@®®¡$ (que tipo de nick eh esse?): não sabia desse operador ^. Muito obrigado pelo esclarecimento. E sim, trocar com somas é perigoso perto das bordas.
Ironlynx: chutei certo então, ufa… até que não sou tão ruim de lógica.
Lipe: Pq vc não tá com nenhuma avatar absolutamente estranho hoje??
Hasta: ö, quer dizer, hasta num é ninguém, bandrade idiota é só dar tchau.
((;
Pense em uma coisa:
exponencial são multiplicações sucessivas.
multiplicação são somas sucessivas.
Já matou? [/quote]
Multiplicação pode ser definida de muitas formas. Usando soma é como aprendemos na escola, mas longe de ser a melhor para computação.
A-ham, mesmo soma e adição podem ser diferentes dependendo do sistema computacional.Fora FPU´s,operações quanticas entre outras.
Mas basicamente, num universo binário simplificado (um x86) da vida, o comportamento será o mesmo do que eu descrevi.Claro, há sistemas com multiplicadores por hardware(dedicado a multiplicar dois valores binários) usando árvores de Wallace, usados atualmente, melhoram(e muito) a performance da forma original de Acc=soma+1… blblabla.Mas a origem, foi a velha “sequência de somas”.
O tipo de nick que alguém inventa quando quer fazer um nick mais complicado que o próprio nome. :lol:
[quote=LucasUyezu] x = (x=1) + (x=7)* (- - x);
Na ordem:
x = 1 -> x = 1 + (x=7)* (- - x);
x = 7 -> x = 1 + 7* (- - x);
Se fosse (-- x) , sem espaços entre os dois “-” o terceiro parênteses daria 6.
Acho q é isso…
[/quote]
hã? :? :?: :?