Maison > développement back-end > C++ > Pourquoi le même code imprime-t-il 'bonjour' en C et rien en C ?

Pourquoi le même code imprime-t-il 'bonjour' en C et rien en C ?

Mary-Kate Olsen
Libérer: 2024-11-09 16:25:03
original
769 Les gens l'ont consulté

Why Does the Same Code Print

Différences de comportement dans le code valide entre C et C

Bien que C et C partagent de nombreuses similitudes, il existe certains cas où du code valide dans les deux les langages peuvent produire des résultats différents lorsqu'ils sont compilés dans chaque langage respectif.

Appel de fonction et objet Déclarations

L'un de ces scénarios est lié à la différence entre les appels de fonction et les déclarations d'objet. En C90, les fonctions peuvent être appelées sans être déclarées au préalable. En C, cependant, les fonctions non déclarées ne sont pas autorisées. Cette distinction peut conduire à un comportement différent lors de la compilation du 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'imprimera rien car un objet temporaire de type f est créé et détruit, entraînant la perte du membre x . En C90, cependant, il affichera "bonjour" puisque les fonctions peuvent être appelées sans avoir été déclarées.

Désambiguïsation des noms

Un autre point à noter est l'utilisation de le nom f dans l'exemple de code. C et C autorisent tous deux l'utilisation du même nom pour les fonctions et les structures. Pour créer un objet en C , struct f doit être explicitement spécifié. Si le mot-clé struct est omis, le code sera interprété comme un appel de fonction. Cette distinction, combinée à la différence dans les conventions d'appel, contribue aux comportements différents observés lors de la compilation du code en C et C .

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!

source:php.cn
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