Maison > développement back-end > C++ > Un code valide en C et en C peut-il produire une sortie différente une fois compilé ?

Un code valide en C et en C peut-il produire une sortie différente une fois compilé ?

Susan Sarandon
Libérer: 2024-11-09 01:37:02
original
787 Les gens l'ont consulté

Can Valid Code in Both C and C   Produce Different Output When Compiled?

Le code valide en C et en C peut-il présenter un comportement divergent une fois compilé ?

Malgré de nombreuses similitudes, il existe des différences subtiles entre C et C . Cela soulève la question : un code valide dans les deux langages peut-il encore produire des résultats différents lorsqu'il est compilé avec leurs compilateurs standards respectifs ?

Conditions préalables à une comparaison équitable

Pour assurer une comparaison significative comparaison, établissons certaines conditions :

  • Les directives du préprocesseur (par exemple, #ifdef) sont exclues.
  • Les aspects définis par l'implémentation sont identiques dans les deux langages.
  • Moderne les versions des normes sont comparées (par exemple, C90 ou version ultérieure et C 98).

Une disparité comportementale

Considérez l'extrait de code suivant :

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}
Copier après la connexion

En C , ce code n'entraînera aucune sortie, car un objet f temporaire est créé et détruit. Cependant, en C90, il affichera "bonjour" car les fonctions peuvent être invoquées sans déclaration préalable.

Cette variance résulte des interprétations distinctes de f() en C et C . En C, f() est traité comme un appel de fonction, tandis qu'en C , il est considéré comme une déclaration d'une structure.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal