Pergunta

Esta pergunta já tem uma resposta aqui:

Eu tenho esse código C.

#include <stdio.h>

int main(void)
{
        int n, d, i;
        double t=0, k;
        scanf("%d %d", &n, &d);
        t = (1/100) * d;
        k = n / 3;
        printf("%.2lf\t%.2lf\n", t, k);
        return 0;
}

Eu quero saber por que minha variável 't' é sempre zero (na função Printf)?

Foi útil?

Solução

Porque nesta expressão

t = (1/100) * d;

1 e 100 são valores inteiros, truncados de divisão inteira, então é o mesmo que este

t = (0) * d;

você precisa fazer disso uma flutuação constante assim

t = (1.0/100.0) * d;

Você também pode querer fazer o mesmo com isso

k = n / 3.0;

Outras dicas

Você está usando a divisão inteira e 1/100 sempre vai diminuir para zero na divisão inteira.

Se você quiser fazer divisão de pontos flutuantes e simplesmente truncar o resultado, pode garantir que está usando literais de ponteiro flutuante, e D será implicitamente convertido para você:

t = (int)((1.0 / 100.0) * d);

Eu acho que é por causa de

t = (1/100) * d;

1/100 como divisão inteira = 0

então 0 * D sempre é igual a 0

Se você fizer 1.0/100.0, acho que funcionará corretamente

O banco de dados de conteúdo é criado quando um aplicativo da Web é criado.No entanto, pode haver mais de um conteúdo de bancos de dados em um aplicativo da Web, como pode ser mais de uma coleção de sites.Cada coleção de sites pode ter um máximo de um banco de dados, mas mais de uma coleção de sites pode compartilhar um banco de dados de conteúdo.Este foi o caso em Moss, SP 2010 e atualmente também em SP 2013

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top