


Dans un programme C, une instruction de commentaire peut-elle être située uniquement après une instruction ?
Erreur, en langage C, la partie commentaire n'a aucun impact sur les résultats d'exécution du programme. Elle peut apparaître n'importe où dans le programme. Il existe deux types de commentaires en langage C : l'un est un commentaire en bloc commençant par "/*" et se terminant par "*/" ; l'autre est un commentaire sur une seule ligne commençant par "//" et se terminant par un caractère de nouvelle ligne.
L'environnement d'exploitation de cet article : système Windows10, c11, ordinateur Thinkpad T480.
Recommandations associées : Tutoriel vidéo sur le langage C
Annotations en langage C
Écriture de la source du langage C Lors du codage , vous devez utiliser davantage de commentaires pour vous aider à comprendre le code. Il existe deux méthodes de commentaire en langage C :
L'une est un commentaire en bloc commençant par /* et se terminant par */
L'autre ; est un commentaire sur une seule ligne commençant par // et se terminant par un caractère de nouvelle ligne.
Vous pouvez utiliser les délimiteurs /* et */ pour marquer les commentaires sur une seule ligne ou pour marquer les commentaires sur plusieurs lignes. Par exemple, dans le prototype de fonction suivant, les points de suspension signifient que la fonction open() a un troisième paramètre, qui est facultatif. Le commentaire explique l'utilisation de ce paramètre facultatif :
int open( const char *name, int mode, … /* int permissions */ );
Vous pouvez utiliser // pour insérer toute une ligne de commentaires, ou écrire le code source dans un format sur deux colonnes, avec le programme dans la colonne de gauche et les commentaires dans la colonne de droite :
const double pi = 3.1415926536; // pi是—个常量
Dans le standard C99, les commentaires sur une seule ligne ont été officiellement ajoutés au langage C, mais la plupart des compilateurs avaient commencé à prendre en charge cet usage avant C99. Parfois, ils sont appelés commentaires « de style C++ », mais en fait ils sont dérivés de BCPL, le prédécesseur du C.
Position des commentaires
En langage C, la partie commentaire n'a aucun impact sur les résultats d'exécution du programme. Elle peut apparaître n'importe où dans le programme.
Exemple :
int/*....*/i; //正确 char* s="abcdefgh //hijklmn"; //正确 in/*...*/ti; //错误注释会被空格替换 //注意: /*...*/不能嵌套 ,/*总是与离他最近的*/匹配 y=x/*p // 该语句由于没有找到*/ 会报错 //要实现以上功能 可以用y=x/(*p)或y=x/ *p代替
Spécification des commentaires
2-1 : En général, le nombre de commentaires effectifs dans le programme source doit être supérieur à 20 %.
Remarque : Le principe des commentaires est d'aider à la lecture et à la compréhension du programme. Ils sont ajoutés là où ils doivent être ajoutés. Les commentaires ne doivent pas être trop nombreux ni trop peu nombreux. Le langage des commentaires doit être précis, simple. comprendre et concis.
2-2 : L'en-tête du fichier doit être commenté, et les commentaires doivent lister : mention de copyright, numéro de version, date de génération, auteur, contenu, fonction, journal des modifications, etc.
Exemple : Les commentaires d'en-tête du fichier d'en-tête ci-dessous sont relativement standards. Bien sûr, ils ne se limitent pas à ce format, mais il est recommandé d'inclure les informations ci-dessus.
/***************************************************************************** Copyright: 1988-1999, Huawei Tech. Co., Ltd. File name: 文件名 Description: 用于详细说明此程序文件完成的主要功能,与其他模块或函数的接口,输出值、取值范围、含义及参数间的控制、顺序、独立或依赖等关系 Author: 作者 Version: 版本 Date: 完成日期 History: 修改历史记录列表, 每条修改记录应包括修改日期、修改者及修改内容简述。 *****************************************************************************/
2-3 : L'en-tête de la fonction doit être commenté, répertoriant : le but/la fonction de la fonction, les paramètres d'entrée, les paramètres de sortie, la valeur de retour, la relation d'appel (fonction, table), etc.
Exemple : les commentaires de fonction suivants sont relativement standards. Bien sûr, ils ne se limitent pas à ce format, mais il est recommandé d'inclure les informations ci-dessus.
/************************************************* Function: // 函数名称 Description: // 函数功能、性能等的描述 Calls: // 被本函数调用的函数清单 Called By: // 调用本函数的函数清单 Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序) Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序) Input: // 输入参数说明,包括每个参数的作// 用、取值说明及参数间关系。 Output: // 对输出参数的说明。 Return: // 函数返回值的说明 Others: // 其它说明 ********************************************/
2-4 : Commentez lors de l'écriture du code, modifiez le code et modifiez les commentaires correspondants en même temps pour assurer la cohérence des commentaires et du code. Les commentaires qui ne sont plus utiles sont supprimés.
2-5 : Le contenu de l'annotation doit être clair et concis, et la signification doit être précise pour éviter toute ambiguïté dans l'annotation. Explication : les mauvais commentaires sont non seulement inutiles, mais nuisibles.
2-6 : Les commentaires doivent être proches du code qu'ils décrivent. Les commentaires sur le code doivent être placés au-dessus ou à droite (commentaires sur une seule instruction) à côté d'eux. comme ci-dessus. Il doit être séparé du code ci-dessus par une ligne vide.
Exemple : L'exemple suivant n'est pas conforme à la spécification.
Exemple 1 :
/* get replicate sub system index and net indicator */ repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni;
Exemple 2 :
repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni; /* get replicate sub system index and net indicator */
doit être écrit comme suit
/* get replicate sub system index and net indicator */ repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni;
2-7 : Pour toutes les variables et constantes ayant une signification physique , Si sa dénomination n'est pas suffisamment explicite, elle doit être annotée pour expliquer sa signification physique lorsqu'elle est déclarée. Les commentaires sur les variables, les constantes et les macros doivent être placés à côté ou à droite au-dessus d'eux.
Exemple :
/* active statistic task number */ #define MAX_ACT_TASK_NUMBER 1000 #define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */
2-8 : Déclaration de structure de données (y compris les tableaux, les structures, les classes, les énumérations, etc.), si sa dénomination n'est pas entièrement auto-annotée, elle doit l'être . Les commentaires sur la structure des données doivent être placés à côté et non en dessous ; les commentaires sur chaque champ de la structure doivent être placés à droite de ce champ.
Exemple : La structure énumération/données/union peut être décrite comme suit.
/* sccp interface with sccp user primitive message name */ enum SCCP_USER_PRIMITIVE { N_UNITDATA_IND, /* sccp notify sccp user unit data come */ N_NOTICE_IND, /* sccp notify user the No.7 network can not */ /* transmission this message */ N_UNITDATA_REQ, /* sccp user’s unit data transmission request */ };
2-9 : les variables globales doivent avoir des commentaires plus détaillés, y compris des descriptions de leurs fonctions, des plages de valeurs, les fonctions ou procédures qui y accèdent et les précautions lors de leur accès.
Exemple :
/* The ErrorCode when SCCP translate */ /* Global Title failure, as follows */ // 变量作用、含义 /* 0 - SUCCESS 1 - GT Table error */ /* 2 - GT error Others - no use */ // 变量取值范围 /* only function SCCPTranslate() in */ /* this modual can modify it, and other */ /* module can visit it through call */ /* the function GetGTTransErrorCode() */ // 使用方法 BYTE g_GTTranErrorCode;
2-10 : Les commentaires sont mis en retrait de la même manière que le contenu qu'ils décrivent.
Description : Cela peut rendre la mise en page du programme soignée et faciliter la lecture et la compréhension des commentaires. Exemple : L'exemple suivant n'est pas bien rédigé, ce qui le rend légèrement difficile à lire.
void example_fun( void ) { /* code one comments */ CodeBlock One /* code two comments */ CodeBlock Two }
doit être remplacé par la mise en page suivante.
void example_fun( void ) { /* code one comments */ CodeBlock One /* code two comments */ CodeBlock Two }
2-11 : Évitez d'insérer des commentaires au milieu d'une ligne de code ou d'expression.
Remarque : Sauf nécessité, les commentaires ne doivent pas être insérés au milieu du code ou des expressions, sinon cela rendra facilement le code moins compréhensible.
2-12 : Rendre le code auto-commentaire en nommant correctement les fonctions ou procédures, les variables, les structures, etc. et en organisant rationnellement la structure du code.
Remarque : une dénomination claire et précise des fonctions, des variables, etc. peut augmenter la lisibilité du code et réduire les commentaires inutiles.
2-13 : Commentez au niveau de la fonction et de l'intention du code pour fournir des informations utiles et supplémentaires.
说明:注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。
示例:如下注释意义不大。
/* if receive_flag is TRUE */ if (receive_flag)
而如下的注释则给出了额外有用的信息。
/* if mtp receive a message from links */ if (receive_flag)
2-14:在程序块的结束行右方加注释标记,以表明某程序块的结束。
说明:当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读。示例:参见如下例子。
if (…) { // program code while (index < MAX_INDEX) { // program code } /* end of while (index < MAX_INDEX) */ // 指明该条while 语句结束 } /* end of if (…)*/ // 指明是哪条if 语句结束
2-15:注释格式尽量统一,建议使用“/*…… */”。
2-16:注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。
说明:注释语言不统一,影响程序易读性和外观排版,出于对维护人员的考虑,建议使用中文。
更多编程相关知识,请访问:编程教学!!
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

typedef struct est utilisé en langage C pour créer des alias de type de structure afin de simplifier l'utilisation des structures. Il crée un alias pour un nouveau type de données sur une structure existante en spécifiant l'alias de la structure. Les avantages incluent une lisibilité améliorée, la réutilisation du code et la vérification du type. Remarque : La structure doit être définie avant d'utiliser un alias. L'alias doit être unique dans le programme et valide uniquement dans le périmètre dans lequel il est déclaré.

real est le type de données utilisé pour représenter les nombres à virgule flottante double précision en langage C. Il occupe 8 octets, a une précision d'environ 15 décimales et la plage est [-1,7976931348623157e+308, 1,7976931348623157e+308].

Le mot-clé restrict est utilisé pour informer le compilateur qu'une variable n'est accessible que par un pointeur, empêchant un comportement non défini, optimisant le code et améliorant la lisibilité : empêchant un comportement non défini lorsque plusieurs pointeurs pointent vers la même variable. Pour optimiser le code, le compilateur utilise le mot-clé restrict pour optimiser l'accès aux variables. Améliore la lisibilité du code en indiquant que les variables ne sont accessibles que par un pointeur.

Le type complexe est utilisé pour représenter des nombres complexes en langage C, y compris des parties réelles et imaginaires. Sa forme d'initialisation est complex_number = 3.14 + 2.71i, la partie réelle est accessible via creal(complex_number) et la partie imaginaire est accessible via cimag(complex_number). Ce type prend en charge les opérations mathématiques courantes telles que l'addition, la soustraction, la multiplication, la division et le modulo. De plus, un ensemble de fonctions permettant de travailler avec des nombres complexes est fourni, telles que cpow, csqrt, cexp et csin.

En langage C, il existe deux manières d'implémenter l'opération d'exponentiation : utiliser la fonction pow() pour calculer la puissance du deuxième paramètre du premier paramètre. Définissez une fonction de puissance personnalisée, qui peut être implémentée de manière récursive ou itérative : la méthode récursive continue de doubler la puissance jusqu'à ce qu'elle atteigne 0. La méthode itérative utilise une boucle pour multiplier la base une par une.

En langage C, les méthodes de gestion des erreurs de la fonction scanf incluent : 1. Vérifiez la chaîne de format ; 2. Vérifiez l'entrée ; 3. Vérifiez la valeur de retour ; 4. Définissez l'indicateur d'erreur ; les erreurs personnalisées sont traitées. Pour éviter les erreurs, utilisez les types de données corrects, validez soigneusement les entrées, vérifiez les valeurs de retour et gérez les erreurs potentielles dans votre programme.

_Bool représente le type booléen en langage C. C'est un type de données simple qui ne contient que deux valeurs, vrai ou faux. Il est utilisé pour représenter les résultats de conditions ou d'expressions logiques. Il occupe généralement 1 octet de mémoire et ne peut stocker que vrai ou. fausse. fausse valeur.

reg est le mot-clé utilisé pour les registres en langage C et est utilisé pour déclarer des variables pointeurs pointant vers des registres. Syntaxe : registre data_type *var_name ; où data_type est le type de données stocké dans le registre et var_name est le nom de la variable de pointeur. La valeur dans le registre est accessible en déréférençant le pointeur, mais veuillez noter que les registres disponibles varient selon les plates-formes et les compilateurs.
