Dlaczego program tak wypisuje?

0
#include <stdio.h>

int main(){
int z2=3, y=4,z1=1;
 char z[10]="egzamin";
 char a='c';
 double x;

 x=((z1++)-4)/(y-2);
 printf("%lf ", x);
}

dlaczego ten program wypisuje -1.00000 zamiast -1.50000?
przecież tam dzieli się -3/2. gdyby zmienna x była int to rozumiem, ale ona jest typu double

2

"przecież tam dzieli się -3/2"
No właśnie. Ile to jest -3/2?

1

W tej linijce:

 x=((z1++)-4)/(y-2);

Tylko x jest double. Wszystkie obliczenia robione są na intach. Rzutowanie na double następuje dopiero przy przypisaniu wartości. Zamień 4 na 4.0 i 2 na 2.0 i powinno być ok.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0