Operatory C

Odpowiedz Nowy wątek
2015-01-19 21:36
0

int z1=4, z2=8;
int m=1;
int t[10]={-1,-2,-3};
char s1[30]="programowanie";
char s2[30]="strukturalne";
double z=(++z2-(z1--))%--z1;
printf("%f \n",z);
printf("1) %.11f\n", z/3);
printf("2) %d\n", --s1[2]<s2);
printf("3) %c\n",
(strlen(s1)-4+s1));
printf("4) %.21f\n", !(z1%z2--) + 2.0z1/z2);
printf("5) %d\n", (3
(++*(t+2)>>2)));
printf("6) %d\n", !(!z2||--z1));

Mógłby ktoś wytłumaczyć , dlaczego z wychodzi 1 a nie 0 , oraz jak to jest z dalszymi , lekki opis ogólnie (najlepiej wszystkimi ) , np co oznacza <*

Pozostało 580 znaków

2015-01-19 22:31
1

Ad 1.

double z=(++z2-(z1--))%--z1;
  • to jest UB czyli możesz dostać dużo różnych wartości w zależności od kompilatora.
    Ad 2.
    --s1[2]<(*s2)

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
@1 dodam że z powodu dwukrotnej operacji na z1 w ramach jednego wyrażenia: raz z1-- drugi raz --z1 - Azarien 2015-01-20 14:42

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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