Formaty i wartości zmiennych

0

Jaką wartość mają następujące wyrażenia :

printf("%f",(int)24.4); //dlaczego tutaj wartość wyjściowa to 0 a nie 24
(int)5e-2 + 3.9; //co to? 
6<2>-1 //yyyyy  6<2 =1 ale co dalej

mam jeszcze pytanie do tego kodu niżej.Chodzi o to dlaczego po wejściu do funkcji 2*f(&i)+2, .wartość zwrócona nie została zdekrementowana, a dopiero póżniej

#include <stdio.h>
#include <stdlib.h>

int f(int *p){
return (*p)--;
}
int g(int n){
return n*3;
}
int main(){
int i= 1, j=2;
printf("\n %d %d\n", 2*f(&i)+2, g(f(&j)+g(1))); //tutaj najpierw wchodzimy do funkcji f z adresem zmiennej j i  potem do funkcji g(1) , 
//a potem do funkcji g(z wartością po dodniu)???
//g(2+3) = g(5) = 18 no a kompilator pokazuje 15. nie rozumiem, odnosiłem się do tego że funkcja zdekrementuje wartość j po wykonaniu instrukcji printf
return 0;
}
1

printf("%f",(int)24.4); dlaczego tutaj wartość wyjściowa to 0 a nie 24

Bo %f oczekuje liczby zmiennoprzecinkowej, a nie całkowitej. Formaty zapisu tych liczb są całkowicie różne. Wydaje mi się, że w tym momencie masz undefined behaviour, ale ktoś mądrzejszy musiałby potwierdzić.

(int)5e-2 + 3.9; //co to?

https://pl.wikipedia.org/wiki/Notacja_naukowa

6<2>-1 //yyyyy 6<2 =1 ale co dalej

6 < 2 daje 0 -_- A potem 0 > -1 daje 1, czyli wynik całego wyrażenia to 1.

mam jeszcze pytanie do tego kodu niżej.Chodzi o to dlaczego po wejściu do funkcji 2*f(&i)+2, .wartość zwrócona nie została zdekrementowana, a dopiero póżniej

Bo masz (*p)--, a nie --(*p)

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