Divisão inteira sempre zero

Duplicar Possível:
Divisão de programação C

Provavelmente minha pergunta é muito simples e estúpida. Eu gostaria de armazenar o valor de uma divisão, em particular 1 / x onde x é um valor inteiro.

 int x = 17; double result = 1/x; 

Eu tento fazer isso mas eu sempre consigo 0.000000 ... Eu tento inserir um valor fixo em x, por exemplo 1/17 mas sempre obtenho o mesmo valor .. o que está errado?

Você está fazendo uma divisão inteira.

Tente o seguinte e funcionará como esperado:

 int x = 17; double result = 1.0 / x; 

O tipo do 1 na expressão que você tem acima é int e o tipo de x é int. Quando você faz int / int , você recebe um int de volta. Você precisa de pelo menos um dos tipos envolvidos para ser ponto flutuante ( float ou double ) para que a divisão de ponto flutuante ocorra.

Ao contrário da Matemática, a divisão em C ++ pode se referir à divisão de inteiros truncados (o que você fez) ou à divisão de ponto flutuante (o que fiz no meu exemplo). Tenha cuidado com isso!

No meu exemplo, explicitamente, o que temos é double / int -> double .