|
|
|
|
Strumenti |
19-03-2019, 20:30 | #1 |
Junior Member
Iscritto dal: Nov 2015
Messaggi: 2
|
Code Blocks problema con il printf? Sono nuovo nella programmazione
Buonasera,
Ho un semplice problema(credo) con codeblocks. Da qualche giorno ho iniziato a programmare e sto usando il compilatore code blocks per programmare in C. dopo aver finito di compilare il mio esercizio(molto semplice) che vi riporterò di seguito, il compilatore mi stampa sempre i stessi valori. Questo è il codice: Codice:
#include <stdio.h> #include <stdlib.h> //Esercizi 3.3 int main(){ int x; int y; int z= x + y; printf("assegnare un valore a x: %d\n", x); scanf("%d", &x); printf("assegnare un valore a y: %d\n", y); scanf("%d", &y); printf("La somma di x e y e': %d\n", z); printf("%d", z); return 0; } Codice:
assegnare un valore a x: 8 31 assegnare un valore a y: 96 32 La somma di x e y e': 104 104 Process returned 0 (0x0) execution time : 3.444 s Press any key to continue. 8 e 96 sono i valori che mi mette sempre lui, senza averli inseriti. Mentre 31 e 32 sono i valori in input che ho inserito. Se prendo il progetto e lo sposto in un'altra cartella del pc, questi valori cambiano. come mai? Spero di essere stato chiaro nell'esporre il problema. Ultima modifica di Alberto5 : 19-03-2019 alle 20:35. |
19-03-2019, 20:40 | #2 | |
Senior Member
Iscritto dal: Jul 2007
Città: Sicilia
Messaggi: 5428
|
Crei le variabili x ed y senza inizializzazione. Se non sono inizializzate possono avere un qualsiasi valore.. Di regola occorre sempre inizializzare le variabili, come ad esempio
Codice:
int x = 0; int* px = NULL; Proprio per evitare problemi del genere alcuni compilatori quando compilano in debug settano dei valori di default pari a 0, ma in release non lo fanno perche' per ragioni di prestazioni dovrebbe essere fatto direttamente dal programmatore, che sa se quei valori vengono utilizzati prima di una loro inizializzazione. E se proprio devo dirla tutta, I compilatori dovrebbero avvisare se una variabile viene utilizzata prima della sua inizializzazione. Ad esempio il seguente codice Codice:
#include <iostream> int main() { int i; std::cout << "i = " << i << std::endl; return 0; } Quote:
__________________
Non abbiamo ereditato il mondo dai nostri padri L'abbiamo preso in prestito dai nostri figli |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:58.