O meu código está certo? [RESOLVIDO]

1. O meu código está certo? [RESOLVIDO]

Thomas Mendonça
Thomas M

(usa Ubuntu)

Enviado em 13/04/2021 - 19:06h

Estou criando uma calculadora em C, mas por algum motivo quando escolho a subtração o sistema está somando, ao invés de subtrair.
Alguém pode me ajudar?
float var1, var2, result;
char *op;

printf("Digite um valor...\n");
scanf("%f", &var1);

printf("Digite outro valor...\n");
scanf("%f", &var2);

printf("Escolha a operação da conta...\n\nUse +,-,* ou /\n");
scanf("%s", op);

if (op = '+') {
result = var1 + var2;
printf("O resultado é %.2f", result);
} else if (op = '-') {
result = var1 - var2;
printf("O resultado é %.2f", result);
}

return 0;



  


2. Re: O meu código está certo? [RESOLVIDO]

Paulo Jr
Pebis

(usa Debian)

Enviado em 13/04/2021 - 19:24h


Comparação é com dois sinais.... if (a==b)


3. Re: O meu código está certo?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 13/04/2021 - 20:48h

Como já disse o colega Pebis (EDIT: o corretor automático do celular tinha trocado para outra coisa, que eu não vou repetir agora, mas que pegava muito mal; desculpas ao colega!), acima, a comparação de igualdade em C é feita com o operador == (dois sinais de igual justapostos), ao passo que o operador = (apenas um sinal de igual) significa atribuição de valor.

Essa mesma distinção existe em várias outras linguagens, sendo que Java, C++, C#, Perl, AWK e algumas outras seguem o mesmo modelo do C, e algumas outras, tais como Pascal, Modula-2, algumas variações de Algol e, se não me engano, Ada usam := para atribuição e = para comparação. Algumas outras, como BASIC e Fortran, usam o mesmo sinal = para ambas as operações, e a ação tomada vai depender do contexto.

A razão pela qual o comportamento do seu programa é como se fosse uma comparação verdadeira é que a própria operação de atribuição retorna um valor, que é o mesmo valor que foi atribuído. Se esse valor for diferente de zero, o comando if interpreta esse resultado como um valor verdadeiro, e executa o código correspondente ao teste verdadeiro.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)