Sto cercando di imparare le basi di C/C++ in questo momento. Sto seguendo un corso su Lynda.comPrincipiante qui: risultati diversi su PC e MAC. Perché?
Le mie domande trattano una sequenza di codice del capitolo 4 "Macro avvertenze dal Corso C/C++ Essential Training". Ho seguito tutte le procedure di configurazione per ottenere correttamente Xcode ed Eclipse su Mac ed Eclipse su PC. Quando eseguo questo codice su MAC e PC ottengo risultati diversi. Sto solo cercando di capire perché questo sta accadendo e cosa posso fare per ottenere lo stesso risultato su entrambi.
Ecco il codice:
// working.c by Bill Weinman <http://bw.org/>
#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))
int increment() {
static int i = 42;
i += 5;
printf("increment returns %d\n", i);
return i;
}
int main(int argc, char ** argv) {
int x = 50;
printf("max of %d and %d is %d\n", x, increment(), MAX(x, increment()));
printf("max of %d and %d is %d\n", x, increment(), MAX(x, increment()));
return 0;
}
Su un PC ottengo questo risultato:
increment returns 47
increment returns 52
max of 50 and 52 is 50
increment returns 57
increment returns 62
increment returns 67
max of 50 and 67 is 62
su un Mac (sia Xcode ed Eclipse) ottengo questo risultato:
increment returns 47
increment returns 52
increment returns 57
max of 50 and 47 is 57
increment returns 62
increment returns 67
increment returns 72
max of 50 and 62 is 72
Perché sta succedendo questo e cosa posso fare per assicurarmi che i risultati siano gli stessi?
BTW: L'IDE non significa nulla, il compilatore esatto e le opzioni che gli si assegnano, in quasi tutti i casi determinano l'ordine. Anche se in teoria potrebbe cambiare su ogni esecuzione del programma. – Deduplicator
@AdrianoRepetti quasi sicuramente un dup, ma dato che ho una risposta a questa domanda, non voglio chiuderlo con un martello. –