Um puzzle fodástico e a respota do puzzle anterior

Primeiro, a resposta do puzzle anterior. Repare que sizeof é um operador que sempre retorna um valor do tipo size_t. Esse tipo é sempre unsigned. Daí, -1 (com sinal, óbviamente), convertido para unsigned, vira 0xffffffff, em plataformas 32 bits… Assim, a condição do loop falha, já que para comparar dois valores, um int e um size_t, ambos são convertidos para size_t… 0xffffffff não é menor que a quantidade de itens no array.

Eis outro puzzle… A intenção do programador era imprimir 20 ‘-‘, mas óbviamente o programa está errado:

#include <stdio.h>
int main()
{
  int i;
  int n = 20;
  for( i = 0; i < n; i-- )
      printf("-");
  return 0;
}

Corrigir o programa é simples, mas o verdadeiro desafio é corrigí-lo modificando apenas um único caracter no código acima. Não vale mudar mais que um caracter, heim!

Anúncios

2 comentários sobre “Um puzzle fodástico e a respota do puzzle anterior

    1. Essa é uma solução… existe outra, consegue enxergá-la tb?

      No loop, trocar “i < n" por "-i < n" tb funciona! :)
      Diz o autor do puzzle que existe uma terceira solução, mas essa eu ainda não consigo ver…

      []s

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s