Capisco che se a printf non viene fornito alcun argomento, viene generato un valore imprevisto.Printf senza spiegazione degli argomenti
Esempio:
#include <stdio.h>
int main() {
int test = 4 * 4
printf("The answer is: %d\n");
return 0;
}
Ciò restituisce un numero casuale. Dopo aver giocato con diversi formati come% p,% x ecc, non stampa 16 (perché non ho aggiunto la variabile alla sezione argomento) Quello che mi piacerebbe sapere è, dove vengono presi questi valori a partire dal? È la cima della pila? Non è un nuovo valore ogni volta che compilo, il che è strano, è come un valore fisso.
È un comportamento non definito. Il fatto che sembri risolto è un felice incidente. Potrebbe provenire dallo stack, magari da un registro ... non si sa, non dovrebbe importare o contare su di esso. –
1. Con 'printf (" La risposta è:% d \ n ")', stai passando ** un argomento **. 2. Se quell'argomento punta a una stringa con terminazione null che non contiene un carattere '%', quindi 'printf' genererà un valore ben previsto. –