@rray fui la na dispensa procurar o chocolate. heheh.. eu vi sim, muito bom. A escolha da sua resposta foi baseado nesse trecho que gostei bastante e foi bem esclarecedor: "[...]No segundo código se existir algo mais a ser executado depois switch será executado, se fosse um return como no primeiro exemplo o método acabaria ali mesmo.[...]" Porém o adicional que acrescentou exemplifica melhor.
eu nao vou entrar no mérito lá na pergunta, pq não é de C, mas o switch no C não me parece ter nenhum problema. Inclusive, ele é BEM interessante para simplificar uma decisão durante a execução.
E em toda linguagem que implementa certinho a tabela de saltos, é muito mais performático que IFs e Else Ifs
Tem quem não goste por precisar "forçar manualmente" pra sair do bloco, mas isso é uma vantagem, e não uma desvantagem. Se a pessoa espera que o switch se comporte como if, é pq não entendeu o recurso.
ele simplesmente vai avançando na tabelinha até o valor bater
em termos de processador, incrementa endereço, compara
sao 2 operaçoes das mais cruas possiveis, extremamente rápidas
pq o valor ele já pegou no Switch, 1x só
em PHP claro que nao tem nada disso, é só um IF disfarçado
mas quando é feito corretamente, é bem eficaz
Aliás, eu fico abismado como essas coisas básicas não são ensinadas nos cursos da área. Não que a pessoa vá usar um Assembly nunca na vida, mas sabendo como a máquina vê a coisa, ajuda muito a se entender com ela.
É como Direito. Eu acho que Direito devia ser ensinado na escola. Os princípios básicos, claro.
Tudo que vc entende os pilares, ou ao menos sabe onde eles ficam, te dá outro patamar pra conviver com aquilo. Pode não saber do assunto, mas quando precisar, vai saber onde procurar, por onde começar, etc.
@rray em resumo, switch "de verdade" é uma ferramenta especializada, não é só um Syntax Sugar para outras estruturas. No Java nao sei como foi feito. Em Harbour não é tão eficiente quanto ao C pq o Harbour roda como VM, e não nativo, mas ja é otimizado com tabela de salto, feita durante a compilação, então ainda é muito vantajoso.
@AckLay em Java eu nao sei como ele trabalha mesmo. Sò me manifestei pq se as pessoas entenderem o que é o switch, vão fazer menos besteira e consequentemente culpar menos o coitado por coisa que não entendem kkkk
Por que isso não compila?
#include <stdio.h>
int main(void) {
int valor = 0;
scanf("%d", &valor);
switch (valor) {
case 0:
int variavel = 1;
printf("%d", variavel);
break;
default:
int variavel = 2;
printf("%d", variavel);
}
}
@Bacco foi bacana se manifestar, eu nunca estudei profundamente a respeito. O objetivo da pergunta era mais pra ser pontinha do iceberg, por cima. Mas foi legal você falar.
Interessante, que eu já ia comentar contigo essa postagem do bigown, que nunca tinha usado desta forma como ele expõe.
Fiz inscrição do SO-JA e percebi uma confusão nos labels do site
Acho que isso deveria ser reportado no StackExchange, mas achei mais conveniente postar aqui mesmo pois não costumo usar tanto os sites da rede e não disponho de tempo para procurar onde e como reportar. Talvez alguém aqui sa...
Estou a fazer uma raspadinha em flash e tenho 9 caixas com cor definida cinzenta o que esta a fazer neste momento e quando clico sobre as caixas muda de cor e mostra-me os números aleatórios da sorte, o que eu quero fazer e uma animação como numa raspadinha verdadeira assim como tem no seguinte s...
@Omni eu fui ao estádio e estava perto de lá, o povo passou-se da cabeça. Eu sinceramente tive medo. O povo lá é muito bravo. É preciso urgentemente aplicar tudo que é leis dai na questão do futebol.
Vendo esses comentários sobre o uso do switch fica a dúvida como ele funciona mesmo e porque ele é diferente do if quando apenas comprar pela igualdade de uma variável única contra uma sequência de valores.
Como isso é compilado?
Ele deve ser preferido ao if?
O nome Tiago tornou-se popular em Portugal para aí há uns trinta anos. Entretanto tenho encontrado também a variante Thiago em brasileiros. E a minha primeira questão é acerca da origem deste h.
O meu nome já se escreveu Jacintho, no tempo em que se escrevia hypothese, hypotheca e pharmacia. Mas...
Em PHP, todo array é iterável.
Qualquer objeto também podem ser usado no foreach, porém o comportamento não pode ser desejado, pois todas as propriedades públicas é que são usadas na iteração. Assim, você precisa definir a interface Iterator ou IteratorAggregate ou RecursiveIterator para determi...
@jbueno cabuloso, viu o erro de português de longe :p (sangue no zóio)
@Bacco bom, já começa pelo fato de que não há um formulario, mas ao preencher os dois campos é enviado um $.post() para uma endereço /valida. Consegui acessar essa página com os dados através do cURL, mas o resultado é: string(47) "window.location.replace('../../anglo/SiaaE')"
Como posso fazer para verificar em Python se um determinado valor é iterável?
O que determina que uma determinado type pode ser iterável?
Por exemplo, como descobrir isso no caso abaixo?
a = 1
b = 'Uma string'
c = [1, 2, 3]
d = xrange(1, 10)
e = range(1, 10)
f = {"a" : 1}
g = True
Hoje mesmo eu arrumei um crawler meu, pq antes era só mandar os dados do formulário direto pro endpoint. Ai inventaram ontem de por um token no formulário, eu precisei mudar o sistema para primeiro carregar o form, pra pegar o token, e só depois enviar. Antes eu só enviava direto, sem o form.
@Bacco o que sei é que, quando logado, o usuário é enviado para site.com/siaaE, mas quando acesso a mão sou redirecionado (provavelmente devido ao login que não existe).
Não sei se vocês já ouviram falar de NPS (Net Promoter Score). Isso é uma metologia para avaliar a satisfação e a lealdade dos clientes. A pergunta é simples: O quanto você recomenda a nossa empresa para seus amigos e familiares ?. As notas vão de 0 a 10. Logo de 0 a 6 são Detratores, 7 e 8 são Neutros e 9 e 10 são Promotores.
O NPS é uma escala de -100 a 100. E ele é calculado da seguinte forma: % de Promotores - % de Detratores. Acontece que no meu caso existem 3 categorias: Comercial, Serviços e Peças. E eu faço um cálculo NPS para cada categoria. No final se fizer a média dos três números dará um número final que é o NPS total.
Então vamos imaginar que o NPS respectivamente das três áreas deram: 20, 30, 40. Somando esses valores e fazendo a média chegamos em 30.
Mas acontece que as vezes um desses números podem ser 0 (zero). Mas não é um 0 que não vale nada. Ele vale mesmo sendo 0. É um número. Mas quando faço uma média com ele, o número final dá errado. Por exemplo, respectivamente um NPS para cada área: 40, 25, 0. O NPS geral devia dar 25. Mas por causa do 0 ao fazer a média, vai para 21.
@Bacco kkkkkk
A pergunta é: como fazer o cálculo dar certo mesmo com o 0 ?
@Bacco mas não há informação, apenas os arquivos css, js, fontes e por ultimo o documento principal, mas nada relevante. O que eu poderia extrair disso?
@Bacco quando precisei extrair algo foi naquela ocasião que peguei o result do curl_exec com preg_match, ou entao na outra que utilizei o dom para pegar o valor de uma tag...
Não creio que seja um bug, ali está avisando que ganhou a medalha conforme o idioma do site, todavia a pergunta tem o titulo em portugues, então tem que manter o titulo tal como é o original. — Guilherme Nascimento16 secs ago
Não é arredondamento. É que assim, tem 50 % de Promotores e 25% de Detratores. Então, 25% é o resultado do NPS. Beleza ?
Agora eu estou categorizando isso. Estou fazendo o NPS de cada área. E uma dessas áreas da 0. Mas por que dá 0 ? Porquê na área de Peças tem 1 voto Promotor e 1 voto Detrator. Logo 1 - 1 é 0.
@Bacco o MagicHat tá conseguindo umas coisas estranhas. Primeiro ele deu uma resposta com mais votos que a do Bigown, agora ele fez uma pergunta com 5 pontos, porém as respostas estão com 0...
Não creio que seja um bug, me parece status-intencional (by design), ali está avisando que ganhou a medalha conforme o idioma do site, todavia a pergunta tem o titulo em portugues, então tem que manter o titulo tal como é o original.
Tanto que se abrir o "StackMenu" no pt.stackoverflow.com e tiv...
Legal você querer ajudar, mas você usou o campo de resposta para fazer um comentário. Você poderá postar comentários quando tiver um pouco mais de pontos de reputação. Por favor utilize o campo de resposta somente para postar uma solução ao problema de que a pergunta trata. — Wallace Maxters23 secs ago