L’utilisation de & avec une variable dans scanf () n’est-elle pas une erreur de syntaxe ou une erreur d’exécution?

On m’a appris qu’une erreur de syntaxe venait d’une seule erreur et n’exécutait pas le programme. Cependant, une erreur d’exécution démarre toujours le programme mais se bloque au milieu. Si je n’avais pas accidentellement mis & devant une variable dans un appel à scanf() , cela serait-il considéré comme une erreur de syntaxe ou une erreur d’exécution?

Par exemple

 int main(void) { int a; printf("input a integer number >>"); scanf("%d\n", a); printf("the input number is %d\n", a); return 0; } 

Dans la déclaration scanf , je n’ai pas & devant a qui planterait, mais il exécute toujours la première déclaration printf , ainsi il afficherait du texte imprimé.

Est-ce que cela va être à la fois une erreur d’exécution et une erreur de syntaxe?

    Dépend de l’intelligence des compilateurs

    Certains compilateurs sont intelligents pour vous avertir de telles erreurs évidentes d’exécution

    Techniquement, ce serait les deux. Il ne le reconnaît pas comme une erreur jusqu’au moment de l’exécution. Cependant, comme indiqué sur cette page, scanf s’attend à ce que les pointeurs des variables formatées ne précèdent pas la variable ‘a’ avec (&) est syntaxiquement incorrecte. La plupart appelleraient cela une erreur d’exécution et c’est exactement ce que je l’appellerais, mais ce n’est pas complètement faux de l’appeler une erreur de syntaxe. Cependant, il s’agit plutôt d’une erreur d’exécution car il n’y a pas d’erreur jusqu’à son exécution.