Ho recentemente scritto un semplice programma in cui per errore uso scanf() invece di printf() per visualizzare un messaggio su console. Mi aspettavo di ottenere errore in fase di compilazione, ma compila bene senza avvisi & arresti anomali in fase di esecuzione. So che scanf() è usato per prendere input dalla tastiera. Non dovrei ricevere un errore nel seguente programma?Perché passare una stringa a scanf() si compila bene in C?
#include <stdio.h>
int main()
{
scanf("Hello world"); // oops, It had to be printf()
return 0;
}
E 'invoca comportamento non definito (UB)? C'è qualche menzione a riguardo nello standard C? Perché non viene controllato in fase di compilazione se gli argomenti validi & validi vengono passati alla funzione scanf() o no?
Impossibile riprodurre arresto anomalo. Il programma funziona bene per me. – EOF
Il codice mi sembra corretto e dovrebbe essere completato normalmente una volta compilato ed eseguito. Come fai a sapere che si "blocca"? Quali sono i sintomi di incidente? – CiaPan
Sono abbastanza sicuro che la grammatica implicita: senza riuscire a compilare e * senza * crashing –