Ir ao conteúdo
  • Cadastre-se

Problemas com somas e atribuições em c no code::blocks


re14nan

Posts recomendados

Olá,

Estou com um problema no meu Code::Blocks que está complicadíssimo de encontrar a solução, vejam:

Quando executo o seguinte programa:

#include<stdio.h>
int main(){
int a, b;
b=0;
a=5;
b=a*(a++);
printf("\na1=%d, b1=%d\n", a, b);
return 0;}

O resultado é:
a1=6, b1=30

 

Eu sei que o resultado está errado, pois sigo instruções dada pelo meu professor, além disso também testei em outro compilador (Dev C++), os resultados deveriam ser:

a1=6, b1=25

 

Sou bastante iniciante em programação, não entendo muito bem qual pode ser o problema, estou usando o Code::Blocks 16.01 MingW setup, conforme indicado pelo meu professor.

Agradeceria muito se puderem me ajudar, fico com medo de construir outros programas e não funcionarem corretamente por causa do compilador.

 

Obrigado!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

isso é por causa da prioridade. Aqui você pode ver uma lista de operadores e suas prioridades.

você vai ver que os operadores -- e ++ estão mais acima que * na tabela. E tambem vai ver o lado que o operador afeta(direita para esquerda). Isso quer dizer que se o operador ++ estiver do lado direito de *, ele vai ter prioridade a todos os operadores que estejam do lado esquerdo conforme a ordem de prioridades nessa tabela, tanto os operadores que estão depois de ++ na linha como na coluna da tabela.

Link para o comentário
Compartilhar em outros sites

amigo... veja nessa tabela a ordem dos operadores conforme prioridade. a ordem para seu calculo é a++, * e por ultimo =, ou seja que primeiro vai ser incrementado, ainda que esse seja pós-fixo, logo será feita a multiplicação e por ultimo a atribuição, não ha nada de errado com o código. Por os operadors ( e ) você só está aumentando a prioridade e deixando o código mais claro, com b=a*(a++); você está obrigando a a++ a incrementar antes de fazer a multiplicação. Pergunte ao seu professor se ele averiguou a ordem de prioridade dos operadors.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...