C言語のデータ型 - 整数データ

知識ポイント 1: 整数データ型

整数データ型 デフォルトのタイプ 名前
[署名付き]int 整数 整数
符号なし整数 符号なし整数 符号なし整数
[署名付き]short[int] 短い 短い
unsigned short[int] 符号なしショート 符号なしショート
[署名付き]long[int] 長さ 長整数
符号なしlong[int] 符号なしロング 符号なし長整数

            上記のカテゴリの式は、正および負の整数を表すことができる符号付き整数であり、符号なし整数は正の整数のみを表すことができます。たとえば、 unsigned int の値の範囲は0 ~ 2*32-1です。

知識ポイント 2: 整数定数

           C 言語では、整数定数は次の 3 つの形式で表現されます。

           1) 10 進整数 (1024 など) は 0 ~ 9 で構成されます。

2) 0 から始まる 8 進整数 ( 0 ~ 123           など) は0 ~ 7 で構成され、10 進数の 83 に等しくなります。

3) 0x 12E2           など、0x で始まる 0 ~ 9、A ~ F からなる 16 進整数。

知識ポイント 3: 整数変数

          C 言語では、整変数に対してメモリ内に一定の長さの記憶単位が割り当てられ、記憶単位のビットは 0 または 1 のみを受け入れるため、この整数変数のデータはバイナリ形式で記憶されます。

          ここで、1 つの記憶単位は 1 バイトに相当し、1 バイトは 8 ビットに相当します。

00000000 =0、00000001 =1、00000010 =2...... 11111111 =255

知識ポイント 4: 整数データの保存

           C言語では数値は2の補数で表現されますが、これには正の整数の補数と負の整数の補数が含まれますが、符号なし短整数は負の数を表すことができず、C言語では元のコードは次の形式で表現されます。

           元のコード;   000000000000000 =0     111111111111111 =2*16-1、つまり 0~65535。

           補数コード: 0                               =+0~+32767 (2*15-1) 32768 個の正の数。

                      1                               =-1~-32768 (-2*15) 32768 個の負の数。

             a: 正の整数の補数は、数値の 2 進形式です。つまり、補数 = 元のコードです。

                   クレジット番号が 2 つのストレージ ユニットを占有する場合、10 の補数を求めます。

                   1) 10 の 2 進数形式は 1010 です。

                   2) 10 の補数 = 1010 (最初の 12 個のゼロは通常省略されます)。

             b: 負の整数の補数。

                   1) データの絶対値はバイナリ形式で表現されます。

                    2) 最上位の符号ビットは 1 で、負の数を意味します (0 は整数を意味します)。

                    3) 符号ビットを除いた値を反転して 1 を加算します。

              例: -5 の補数を求めます。

              1) 5 のバイナリ コード = 101、5 の元のコードは 0000000000000101 です。

              2) 負の数なので、最大符号は 1 なので、1000000000000101 になります。

              3) ビット単位の反転は 111111111111010 です。

              4) 1 を追加すると、1111111111111011 が得られます。

知識ポイント 5: メモリ内の整数データのサイズ

           C 標準では、さまざまなタイプのデータが占めるストレージ ユニットの長さは指定されていません。sizeof(short)<=sizeof(int)<=sizeof(long) のみが必要です。具体的な要件は各コンパイル システムによって決定されます。

           sizeof は、型または変数の長さを測定する演算子です。次のコードのように、sizeof() 関数を使用して、計算でデータに割り当てるバイト数を決定できます。

#include<stdio.h>
int main()
{
printf("%d,sizeof(int));
printf("%d,sizeof(short));
printf("%d,sizeof(long));
return 0;
}

知識ポイント 6: 整数変数の定義

          C 言語は、最初に必須の型定義に厳密に従い、それから使用します。型区切り文字を使用して、整数型の変数を定義できます。定義方法は次のとおりです。

[型定義子] 識別子 ( int num            など)

           整数データを格納するためにメモリ内で 4 バイトのスペースが使用され、このスペースはnumという名前で識別されます。

知識ポイント 7: 整数データのオーバーフロー

          1) signed または unsigned 修飾子を使用して追加できるのは整数 (文字を含む) データのみですが、実数型データは追加できません。

          2) 符号なし整数データを出力するには、「%u」形式を使用します。%u は、符号なし 10 進数形式での出力を意味します。のように:

unsigned short price=50;          //定义price为无符号短整型变量
printf("%u\n",price);             //指定用无符号十进制数的格式输出

          3) 符号付きデータの場合、表現できるデータの範囲が決まっているため、「足し算」などの操作を続けると境界を超えてしまう(C言語ではデータオーバーフローと呼んでいます)。データ オーバーフローは発生しませんが、エラーは報告されますが、期待した結果は得られません。次に例を示します。

#include<stdio.h>
int main()
{
int i=32767;
printf("%d",i+1);
return 0;
}

          結果: 32767 ではなく -32768

          4) 符号なし整数として定義された変数を指定した後は、それに負の値を代入しないでください。そうしないと、次のような間違った結果が得られます。

unsigned short price=-1;   \\不能吧一个负整数存储在无符号变量中
printf("%d\n",price);

          結果: -1 ではなく 65535

おすすめ

転載: blog.csdn.net/m0_73463638/article/details/126686397