ホームページ バックエンド開発 C#.Net チュートリアル C プログラムでは、コメント ステートメントはステートメントの後にのみ配置できますか?

C プログラムでは、コメント ステートメントはステートメントの後にのみ配置できますか?

Dec 31, 2020 pm 02:01 PM
C言語 コメント プログラム

エラーです。C 言語では、コメント部分はプログラムの実行結果には影響しません。プログラム内のどこにでも記述できます。 C言語のコメントには、「/*」で始まり「*/」で終わるブロックコメントと、「//」で始まり改行文字で終わる単行コメントの2種類があります。

C プログラムでは、コメント ステートメントはステートメントの後にのみ配置できますか?

#この記事の動作環境: Windows10 システム、c11、thinkpad t480 コンピューター。

関連する推奨事項:

C 言語ビデオ チュートリアル

C 言語でのコメント

C 言語ソースを作成するときコードを理解するために、より多くのコメントを使用する必要があります。 C 言語には 2 つのコメント メソッドがあります:

  • # 1 つは /* で始まり */ で終わるブロック コメントです;

  • もう 1 つは /* で始まり */ で終わるブロック コメントです。 // で始まり改行文字で終わる 1 行のコメントです。

/* および */ 区切り文字を使用して、1 行内のコメントをマークしたり、複数行のコメントをマークしたりできます。たとえば、次の関数プロトタイプの省略記号は、open() 関数にオプションの 3 番目のパラメーターがあることを意味します。コメントは、このオプションのパラメーターの使用法を説明しています:

1

int open( const char *name, int mode, … /* int permissions */ );

ログイン後にコピー

// を使用してコメントの行全体を挿入することも、左の列にプログラムを配置して 2 列形式でソース コードを記述することもできます。右側の列のコメント:

1

const double pi = 3.1415926536;       // pi是—个常量

ログイン後にコピー

C99 標準では、単一行のコメントが C 言語に正式に追加されましたが、ほとんどのコンパイラは C99 より前にこの使用法をサポートし始めていました。これらは「C スタイル」コメントと呼ばれることもありますが、実際には C の前身である BCPL から派生したものです。

コメントの位置

C 言語では、コメント部分はプログラムの実行結果に影響を与えず、プログラム内のどこに記述しても問題ありません。

例:

1

2

3

4

5

6

7

8

9

10

11

int/*....*/i;                                   //正确

 

char* s="abcdefgh   //hijklmn";                  //正确

 

in/*...*/ti;                                    //错误注释会被空格替换

 

//注意:             /*...*/不能嵌套 ,/*总是与离他最近的*/匹配

 

 y=x/*p           //       该语句由于没有找到*/ 会报错

  

//要实现以上功能  可以用y=x/(*p)或y=x/ *p代替

ログイン後にコピー

コメントの仕様

2-1: 通常の状況では、ソースプログラム内の有効なコメントの量は、 20%。

注: コメントの原則は、プログラムの読みやすさと理解を助けることです。コメントは必要に応じて追加する必要があります。コメントは多すぎても少なすぎてもいけません。コメントの言語は正確で、理解しやすいものである必要があります。 、そして簡潔です。

2-2: ファイルヘッダーにはコメントを付ける必要があり、コメントには著作権表示、バージョン番号、生成日、作成者、内容、機能、変更ログなどをリストする必要があります。

例: 以下のヘッダファイルのヘッダコメントは比較的標準的ですが、もちろんこの形式に限定されるものではありませんが、上記の情報を含めることを推奨します。

1

2

3

4

5

6

7

8

9

/*****************************************************************************

Copyright: 1988-1999, Huawei Tech. Co., Ltd.

File name: 文件名

Description: 用于详细说明此程序文件完成的主要功能,与其他模块或函数的接口,输出值、取值范围、含义及参数间的控制、顺序、独立或依赖等关系

Author: 作者

Version: 版本

Date: 完成日期

History: 修改历史记录列表, 每条修改记录应包括修改日期、修改者及修改内容简述。

*****************************************************************************/

ログイン後にコピー

2-3: 関数ヘッダーにはコメントを付け、関数の目的/機能、入力パラメータ、出力パラメータ、戻り値、呼び出し関係 (関数、テーブル) などをリストする必要があります。

例: 以下の関数コメントは比較的標準的ですが、もちろんこの形式に限定されるものではありませんが、上記の情報を含めることをお勧めします。

1

2

3

4

5

6

7

8

9

10

11

12

/*************************************************

Function: // 函数名称

Description: // 函数功能、性能等的描述

Calls: // 被本函数调用的函数清单

Called By: // 调用本函数的函数清单

Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)

Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)

Input: // 输入参数说明,包括每个参数的作// 用、取值说明及参数间关系。

Output: // 对输出参数的说明。

Return: // 函数返回值的说明

Others: // 其它说明

********************************************/

ログイン後にコピー

2-4: コードを記述しながらコメントし、コードを修正し、同時に対応するコメントも修正して、コメントとコードの一貫性を確保します。役に立たなくなったコメントは削除されます。

2-5: 注釈の内容は明確かつ簡潔である必要があり、注釈のあいまいさを防ぐために意味は正確でなければなりません。説明: 間違ったコメントは役に立たないだけでなく有害です。

2-6: コメントは、説明するコードの近くに配置する必要があります。コードに関するコメントは、コードの上または右 (単一のステートメントに関するコメント) に隣接して配置する必要があります。下には配置しないでください。上記のコードと空白行で区切る必要があります。

例: 次の例は仕様に準拠していません。

例 1:

1

2

3

/* get replicate sub system index and net indicator */

repssn_ind = ssn_data[index].repssn_index;

repssn_ni = ssn_data[index].ni;

ログイン後にコピー
ログイン後にコピー

例 2:

1

2

3

repssn_ind = ssn_data[index].repssn_index;

repssn_ni = ssn_data[index].ni;

/* get replicate sub system index and net indicator */

ログイン後にコピー

は次のように記述します

1

2

3

/* get replicate sub system index and net indicator */

repssn_ind = ssn_data[index].repssn_index;

repssn_ni = ssn_data[index].ni;

ログイン後にコピー
ログイン後にコピー

2-7: 物理的な意味を持つすべての変数と定数の場合, 名前が十分に自明でない場合は、宣言時にその物理的な意味を説明する注釈を付ける必要があります。変数、定数、およびマクロのコメントは、それらの隣または右上に配置する必要があります。

例:

1

2

3

/* active statistic task number */

#define MAX_ACT_TASK_NUMBER 1000

#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */

ログイン後にコピー

2-8: データ構造宣言 (配列、構造体、クラス、列挙型などを含む)、その命名が完全に自己注釈されていない場合は、コメントする必要があります。 。データ構造に関するコメントは、データ構造の下ではなく隣に配置する必要があります。構造内の各フィールドに関するコメントは、このフィールドの右側に配置する必要があります。

例: 列挙/データ/共用体の構造は次の形式で記述できます。

1

2

3

4

5

6

7

8

/* 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: グローバル変数には、関数の説明、値の範囲、アクセスする関数やプロシージャ、アクセス時の注意事項など、より詳細なコメントが必要です。

例:

1

2

3

4

5

6

7

8

9

/* 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: コメントは、説明するコンテンツと同じ方法でインデントされます。

説明: プログラムのレイアウトを整理し、コメントを読みやすく理解することができます。例: 次の例は、きちんと入力されていないため、少し読みにくくなっています。

1

2

3

4

5

6

7

void example_fun( void )

{

/* code one comments */

CodeBlock One

/* code two comments */

CodeBlock Two

}

ログイン後にコピー
ログイン後にコピー

を次のレイアウトに変更する必要があります。

1

2

3

4

5

6

7

void example_fun( void )

{

/* code one comments */

CodeBlock One

/* code two comments */

CodeBlock Two

}

ログイン後にコピー
ログイン後にコピー

2-11: コード行または式の途中にコメントを挿入することは避けてください。

注: 必要な場合を除き、コードまたは式の途中にコメントを挿入しないでください。挿入すると、コードが理解しにくくなりやすくなります。

2-12: 関数やプロシージャ、変数、構造体などに正しく名前を付け、コードの構造を合理的に整理して、コードにセルフコメントを加えます。

注: 関数、変数などの明確かつ正確な名前を付けると、コードの可読性が向上し、不要なコメントが削減されます。

2-13: コードの関数および意図レベルでコメントして、有用な追加情報を提供します。

说明:注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。

示例:如下注释意义不大。

1

2

/* if receive_flag is TRUE */

if (receive_flag)

ログイン後にコピー

而如下的注释则给出了额外有用的信息。

1

2

/* if mtp receive a message from links */

if (receive_flag)

ログイン後にコピー

2-14:在程序块的结束行右方加注释标记,以表明某程序块的结束。

说明:当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读。示例:参见如下例子。

1

2

3

4

5

6

7

8

if (…)

{

// program code

while (index < MAX_INDEX)

{

// program code

} /* end of while (index < MAX_INDEX) */ // 指明该条while 语句结束

} /* end of if (…)*/ // 指明是哪条if 语句结束

ログイン後にコピー

2-15:注释格式尽量统一,建议使用“/*…… */”。

2-16:注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。

说明:注释语言不统一,影响程序易读性和外观排版,出于对维护人员的考虑,建议使用中文。

更多编程相关知识,请访问:编程教学!!

以上がC プログラムでは、コメント ステートメントはステートメントの後にのみ配置できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語データ構造:ツリーとグラフのデータ表現と操作 C言語データ構造:ツリーとグラフのデータ表現と操作 Apr 04, 2025 am 11:18 AM

C言語データ構造:ツリーとグラフのデータ表現は、ノードからなる階層データ構造です。各ノードには、データ要素と子ノードへのポインターが含まれています。バイナリツリーは特別なタイプの木です。各ノードには、最大2つの子ノードがあります。データは、structreenode {intdata; structreenode*left; structreenode*右;}を表します。操作は、ツリートラバーサルツリー(前向き、順序、および後期)を作成します。検索ツリー挿入ノード削除ノードグラフは、要素が頂点であるデータ構造のコレクションであり、近隣を表す右または未照明のデータを持つエッジを介して接続できます。

C言語ファイルの操作問題の背後にある真実 C言語ファイルの操作問題の背後にある真実 Apr 04, 2025 am 11:24 AM

ファイルの操作の問題に関する真実:ファイルの開きが失敗しました:不十分な権限、間違ったパス、およびファイルが占有されます。データの書き込みが失敗しました:バッファーがいっぱいで、ファイルは書き込みできず、ディスクスペースが不十分です。その他のFAQ:遅いファイルトラバーサル、誤ったテキストファイルエンコード、およびバイナリファイルの読み取りエラー。

CSウィーク3 CSウィーク3 Apr 04, 2025 am 06:06 AM

アルゴリズムは、問題を解決するための一連の指示であり、その実行速度とメモリの使用量はさまざまです。プログラミングでは、多くのアルゴリズムがデータ検索とソートに基づいています。この記事では、いくつかのデータ取得およびソートアルゴリズムを紹介します。線形検索では、配列[20,500,10,5,100,1,50]があることを前提としており、数50を見つける必要があります。線形検索アルゴリズムは、ターゲット値が見つかるまで、または完全な配列が見られるまで配列の各要素を1つずつチェックします。アルゴリズムのフローチャートは次のとおりです。線形検索の擬似コードは次のとおりです。各要素を確認します:ターゲット値が見つかった場合:return true return false c言語実装:#include#includeintmain(void){i

C言語マルチスレッドプログラミング:初心者のガイドとトラブルシューティング C言語マルチスレッドプログラミング:初心者のガイドとトラブルシューティング Apr 04, 2025 am 10:15 AM

C言語マルチスレッドプログラミングガイド:スレッドの作成:pthread_create()関数を使用して、スレッドID、プロパティ、およびスレッド関数を指定します。スレッドの同期:ミューテックス、セマフォ、および条件付き変数を介したデータ競争を防ぎます。実用的なケース:マルチスレッドを使用してフィボナッチ数を計算し、複数のスレッドにタスクを割り当て、結果を同期させます。トラブルシューティング:プログラムのクラッシュ、スレッドの停止応答、パフォーマンスボトルネックなどの問題を解決します。

C言語でカウントダウンを出力する方法 C言語でカウントダウンを出力する方法 Apr 04, 2025 am 08:54 AM

Cのカウントダウンを出力する方法は?回答:ループステートメントを使用します。手順:1。変数nを定義し、カウントダウン数を出力に保存します。 2。whileループを使用して、nが1未満になるまでnを連続的に印刷します。 3。ループ本体で、nの値を印刷します。 4。ループの端で、n x 1を減算して、次の小さな相互に出力します。

Debian Readdirが他のツールと統合する方法 Debian Readdirが他のツールと統合する方法 Apr 13, 2025 am 09:42 AM

DebianシステムのReadDir関数は、ディレクトリコンテンツの読み取りに使用されるシステムコールであり、Cプログラミングでよく使用されます。この記事では、ReadDirを他のツールと統合して機能を強化する方法について説明します。方法1:C言語プログラムを最初にパイプラインと組み合わせて、cプログラムを作成してreaddir関数を呼び出して結果をinclude#include#include inctargc、char*argv []){dir*dir; structdireant*entry; if(argc!= 2){(argc!= 2){

C言語関数の概念とその定義形式 C言語関数の概念とその定義形式 Apr 03, 2025 pm 11:33 PM

C言語関数は、再利用可能なコードブロック、処理のパラメーターを受信し、結果を返すことです。それはスイスの陸軍ナイフに似ており、強力であり、慎重に使用する必要があります。関数には、形式の定義、パラメーター、戻り値、関数体などの要素が含まれます。高度な使用には、関数ポインター、再帰関数、コールバック関数が含まれます。一般的なエラーはタイプの不一致であり、プロトタイプの宣言を忘れています。デバッグスキルには、変数の印刷とデバッガーの使用が含まれます。パフォーマンス最適化は、インライン関数を使用します。関数設計は、単一の責任の原則に従う必要があります。 C言語関数の習熟度は、プログラミングの効率とコードの品質を大幅に向上させることができます。

C言語関数の定義のコール宣言の形式を取得する方法 C言語関数の定義のコール宣言の形式を取得する方法 Apr 04, 2025 am 06:03 AM

C言語関数には、定義、呼び出し、宣言が含まれます。関数定義関数名、パラメーター、リターンタイプを指定します。関数本体は関数を実装します。関数呼び出しは機能を実行し、パラメーターを提供します。関数宣言は、コンパイラに関数タイプを通知します。値パスは、パラメーターパスに使用され、リターンタイプに注意を払い、一貫したコードスタイルを維持し、関数のエラーを処理します。この知識を習得することは、エレガントで堅牢なCコードを書くのに役立ちます。

See all articles