simonerusso64 ha scritto:se l'if è falso e in quest'ultimo ci sono degli incrementi/decrementi, nell'else if parto sempre dai valori iniziali, ossia a = 5, b=3 e c=0, oppure da quelli modificati dal primo if ?
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 5;
int b = 3;
int c = 0;
// e_1 rappresenta !b--
int e_1 = !b; // e_1 = 0
b = b - 1; // b = 2
// e_2 rappresenta !b-- && ++a
int e_2 = e_1; // e_2 = 0
if (e_1) { // Non eseguito
a = a + 1;
e_2 = a;
}
// e_3 rappresenta !b--&&++a || !c-- % 2 == 0
int e_3 = e_2; // e_3 = 0
if (!e_2) { // Viene eseguito
int e_4 = !c; // e_4 = 1
c = c - 1; // c = -1
e_3 = e_4 % 2 == 0; // 0
}
if (e_3) { // Non eseguito
c = c - 3*a;
}
if (!e_3) { // Eseguito
int e_5 = !(a%2 == 0); // e_5 = 1
if (!e_5) { // Non eseguito
e_5 = b;
b = b + 1;
if (e_5) {
e_5 = a;
a = a - 1;
}
}
if (e_5) { // Eseguito
a = a - 1; // a = 4
b = b + 1; // b = 3
}
}
b = b + 1; // b = 4;
int e_6 = b - c; // e_6 = 5;
if (e_6 == 0) { // Non eseguito
printf("%d - ", a);
}
if (e_6 == 0 || e_6 == 1) { // Non eseguito
printf("%d - ", b);
}
if (e_6 == 2) { // Non eseguito
printf("%d - ", c);
}
if (e_6 != 0 && e_6 != 1) { // Eseguito
printf("%d", a); // Stampa 4
}
return 0;
}
Visitano il forum: Nessuno e 1 ospite