Duvida exercicio em C
Estou estudando um pouco de C (o básico até agora) e hoje resolvi fazer um pequeno exercício. Resumo: Usuário insere um valor e o programa retorna as cédulas que ele poder ter com o valor inserido (sendo as cédulas: 1, 5, 10, 50, 100).
Como da pra ver no fim do "case" estou utilizando uma função recursiva, até o momento aparenta quase tudo estar certo, mas me deparei com algo que me deixou confuso, pois pra qualquer valor que eu colocar, o máximo que o programa retorna para cada cédula é 1, seguindo o formato que está abaixo, porém se eu tirar o operador pipe "||" o programa armazena corretamente, por que isso acontece ?
Pequena explicação de como está a estrutura do programa
Tem uma função que executa todos os cálculos, ela é chama na main() e recebe 2 parâmetros: o valor inserido e o tamanho do array (para que percorra corretamente todos os valores de cédulas.
Cada cédula possui uma variável que armazena sua quantidade que será retornada, são declaradas no topo da função.
Exemplo do código que calcula a quantidade de cédulas, única coisa de uma cédula para outra (no código) são os valores
if(value){
case 100:
{
printf("case = 100");
resto = value%cedulas[cont];
qtd100 = value / cedulas[cont] || 0;
printf("\n%d\n", qtd100);
return conta(resto, cont -1);
}
}
Revisando o codigo consigo ver que nao tem porque usar o pipe nessa situacao, mas mesmo assim fiquei curioso do porque disso acontecer