C 仕様編集者のメモ (6)

以前の記事:

C仕様編集上の注意(1)
C仕様編集上の注意(2)
C仕様編集上の注意(3)
C仕様編集上の注意(4)
C仕様編集上の注意(5)

文章:

今日は引き続き、C 仕様編集者のメモの第 6 章を共有します。
早速、見てみましょう。

1. 構造体変数は初期化値を指定せずに初期化してはならず、構造体変数の各フィールド/要素を初期化する必要があります。

*各要素は明確な識別子を使用して初期化する必要があり、冗長な初期化値はありません。あるいは、宣言で {0} 初期化子を使用することもできます。比較のために 2 つの例を次に示します。

まず悪い例を見てください。

Bad example:
int32_t y[5] = {
    
    1, 2, 3}; /* 此处的初始化具有误导性——实际上,最后两个元素初始化为零 */
int32_t z[2] = {
    
    1, 2, 3}; /* 多初始化一个值 */
int16_t vv[5] = {
    
     [0] = -2, [1] = -9, [3] = -8, [2] = 18 }; /* s错误来源,索引 2 和 3 不是按递增顺序排列的,而 4 被遗忘了 */
struct person {
    
    
unsigned char name[20];
uint16_t roll;
float marks;
int grades[10];
};
struct person p1 = {
    
    " ", 0}; /* 模糊定义 */
struct person p2 = {
    
    "toto" ,67 ,78.3 ,{
    
    0} ,12}; /* 12为多初始化的一个变量 */

良い例:

Good example:
int32_t y[5] = {
    
     1, 2, 3, 4, 5 }; 
int32_t z[2] = {
    
     1, 2 }; 
int32_t w[3] = {
    
     0 }; 
/* 以下这种索引值初始化可能比较少见*/
int16_t vv[5] = {
    
     [0] = -2, [1] = -9, [2] = 18, [3] = -8, [4] = 33 }; /* ok */
struct person {
    
    
unsigned char name[20];
uint16_t roll;
float marks;
int grades[10];
};
//结构体这种初始化可以参考一下
struct person p1 = {
    
     .name = "titi", .roll = 12, .marks = 10.0f, .note = {
    
    0}};
struct person p2 = {
    
     .name="toto", .roll=67, .marks=78.3 , .grades={
    
    0}}; 

2. C 標準では、各タイプの整数の明示的なサイズは定義されていません。特に int 型の場合、アーキテクチャに応じて 16、32、または 64 ビットになります。

3. 通常の char 型は数値には使用しないでください。その符号は C 標準では指定されておらず、実装によって定義されているためです。このタイプは文字処理に限定する必要があります。

*ルール — 数値の処理には signed char 型と unsigned char 型のみを使用する必要があるため、整数の処理に char 型を使用する場合は、その前に unsigned を付ける必要があります。

4. 提案 - 型エイリアスを再定義しないでください。たとえば、
型エイリアスを複数回定義するのは良くありません。

Bad example:
/* 这里重复对unsiged short类型进行重定义*/
typedef unsigned short uint16_t;
typedef unsigned short uint16_type; 
typedef uint16_t unsigned_short; 

良い定義:

Good example:
typedef unsigned short uint16_t;

さて、今日はまずここで共有しましょう~
C仕様編集者ノートの第7回の記事でお会いしましょう~

ここに画像の説明を挿入

私のレベルは限られており、上記の情報は学習の参考のみです。間違いや不適切な点があれば、ご指摘ください。
また、作成するのは簡単ではありません、盗用しないでください、皆さんに役立つなら、皆さんに気に入っていただければ幸いです、ありがとう~

おすすめ

転載: blog.csdn.net/OMGMac/article/details/128211998