lC言語 変数と定数(1/5) データの型 '98. 5.14   /96.11. 5
l.お知らせ 内容 LINK FILE   HTML Win PC Unix MS-DOS C C++ Mfc Java 
.C言語_ 3 フォ-マットコ-ド 6 演算子 9 FOR  集合デ-タ  目的別
1 表示してみる 4 変数と定数 7 条件判断 10 WHIILE  ポインタ     
2 エスケ-プ コ-ド 5 デ-タ入力 8 分岐   未使用  関数   ★ 
P0 [基本]     P1 [データの型]  定数の型指定  変数の種類
P2 [変数]  宣言  サイズ  表示方法  処理方法  初期化  
P3 [型 ]  上位変換  キャスト  ポインタ  配列  定義型  グロ-バル変数  static変数 
P4 [定数] 型  符号  デフォルトの型  上位変換  文字定数  const変数
P5 [参考]  データの構造 (配置順序  2の補数  小数  構造の表示 )
誤 → 正  doubl → double ('98. 5. 6 訂正)

データの型  P2 以降は 詳細のページです。
数値を表わすのには signed sort int 型が最も多く使用されます。
 
型の指定を省略できる場面で 型の指定を省略すると、int型になります。
型名 
signed char
unsigned char
signed short int
unsigned short int
signed long int
unsigned long int
float
doubule
long doubule
バイト数
1
1
2
2
4
4
4
8
10
数値の範囲
-128〜127
 0〜255
-32768〜32767
   0〜65535
-2147483648〜2147483647
     0〜4294967295
±(1.2×10-45〜3.4×1038)
±(4.8×10-324〜1.7×10308)
±(10-4,951〜104,932)
対応フォ-マットコ-ド
%o %d %x ( %c %s )
 〃 
%o %d %x
%u
%lo %ld %lx
%lu
%e %f %g
 〃 
%Le %Lf %Lg
 十進精度 float 6.9桁 doubl 15.6桁 long doubl 19.3桁 ( LSI C-86 以外では 違う値かも知れません。)
整数値には char型(1バイト) または int型(2または4バイト) を使用します。
 正数だけを扱うときは unsigned を、負数も扱うときは signed を付けて書きます。
  省略すると、char 型では unsigned、 int 型では signed になります。
  . . . unsigned char は、 char と省略記述できます。(LSI C-86)
 int 型を2バイトにするには short を、4バイトにするには
long を付けて書きます。
  省略時は short です。( VisualC では、省略時は long です。)
  省略記述の例
   signed short int → signed、 shortint、 short int など。
   unsigned short int → unsigned、 unsigned int など。
   signed long int → long、 long int、 signed long のいずれか。
   unsigned long int → unsigned long、 unsigned long など。

小数値、または、整数で扱えないような大きな数には float を使います。
 高い精度と大きさが必要なときは、double を使います。
 ( Windows95 の関数電卓は、double まで計算が可能です。)
 より高い精度と大きさが必要なときは、long double を使います。

文字コードは、char 型の変数に代入します。
 文字のコードを代入するには、X='A'; のように 文字を ' ' で囲みます。
  などの全角文字は2バイトです。( char 型の変数を二個使います。)
 全角文字コードは char 型の変数には代入できません。( int 型に代入できます。)
文字列は、char 型変数の 配列に格納します。
 文字列は、X[10]="文字列"; ように " " で囲みます。

これらの内容を どのように表示するのかは、フォ-マットコ-ドで指定します。
 ( %d なら十進数、%X なら16進数、%c なら文字として表示できます。)


定数の型指定
記号  意味
0   8進数であることを示します。
0x   16進数 〃
.   小数値 〃
L   long 型 〃
' '  文字の、コード 〃
" "  文字列 〃
変数に定数を代入する場合は、普通は 変数の型に合わせられます。

型を明確に示す必要がある場合には、左のような記号で指定します。
具体例

char
 

 
short
int



 
long
int

 
float
 
double
long double
記述例
65
 
0x41
'A'
0101240
 
33440
-32096
0x82A0
''
2147483648
 
16L
0x10L
 
10./3
10.L/3
説明
十進数で記述。
 
16進数で記述。(10進数では 65)
文字コードで記述。( 〃 )
8進数で記述。(10進数では 33,440
または -32,096)
十進数を unsigned 型で記述。
十進数を signed 型で記述。
16進数で記述。(10進数では 33,440 または -32,096)
文字コードで記述。( 〃 )
十進数で記述。
 
 〃 ( long 未満の十進数値。)
16進数で記述。(10進数では 16)
doubl 型の定数を、float
型の変数に代入できます。
. を付けないと、小数点以下は切り捨てられます。
精度が必要なときは L を付けて、long 型にします。

※ short int 型では、33440 と -32096 は同じデータ(16 進数では 0x82A0) です。
2バイトの限られた桁数を有効に使うために、整数の表わしかたを分けているからです。
正数だけを使いたいときには、0〜65,535 を使用できます。( unsigned 型 )
負数も使いたいときには、-32,768〜32,767 を使用できます。( signed 型 )
この範囲内であれば、計算なども正しく行われます。
データそのものは、どちらの使い方もできる、2の補数というコードで表わされます。
値を表示するときに、
%u の指定をすれば unsigned 型 として表示されます。
%d の指定をすれば signed 型 として表示されます。
型変換について
.L は、次のようにキャスト(型変換) した場合と等価です。
16L   ==  (long)16    16 は、long 型に変換されます。
 
10./3 == (double)10/3   10、は double 型に変換されます。
10.L/3 == (long double)10/3  10 は、long double 型に変換されます。



変数の種類
#include <stdio.h>
int G1;             /* グローバル変数  */
int G2=202;         /*  〃       */
void func()
{ int A1;           /* 自動変数     */
  int A2=22;        /*  〃       */
  static int A3=33; /* スタティック変数 */
  const int A4=44;  /* 定数変数     */
  G1=101; A1=11;    /* 変数に代入します。*/
  printf("A1=%d A2=%d A3=%d A4=%d \n",A1,A2,A3,A4);
}
int G3=303;         /* グローバル変数  */
void main()
{ int A1=55;        /* 自動変数     */
  func();
  printf("G1=%d G2=%d G3=%d A1=%d \n",G1,G2,G3,A1);
}
変数の特徴
グローバル変数(global variables)
宣言位置よりも後なら、どの関数からでもグローバルに使用できます。
使用するよりも前の、関数の外側(external) に宣言します。
大域変数、または外部変数(external variables) とも呼ばれます。  
初期化しなくても、0 の値で初期化されます。
変数の値は、プログラムが終了するまで 消滅しません。

自動変数(automatic variables)
関数の中の、一番最初の部分にまとめて宣言します。
宣言した関数の中だけで使用できます。 
初期化しなかった場合の値は不定です。
その場所が以前に使われたときのデータが そのままに残っています。
ただし 宣言と同時に一部でも初期化した場合は、
初期化しなかった残りは 0 の値で初期化されます。
自動変数の値は、その関数の動作が終了すると 自動的に消滅します。

静的変数(static variables)
グローバル変数を、その関数専用にしたものです。
関数の動作が終了しても 変数の値はそのまま残っていますが、
宣言した関数の中だけで使用できます。

定数変数(constant variables ?)
定数に名前を付けたものです。
代入することができない変数として使用できます。

備考 : 自動変数を、宣言と同時に初期化した場合 (LSI C-86)
プログラムファイルの中に、変数と同じサイズの初期化用のデータが作られます。
char S[1024]="ABC"; なら、プログラムファイルは 1KB 大きくなります。
指定しなかった残りの 2021 個の初期化用データの値は 0 になります。
関数を実行すると、このデータで変数が初期化されます。

自動変数を、宣言時に初期化しなかった場合
変数は、初期化の記述した分だけが 初期化されます。
T

C言語 3 フォ-マットコ-ド 4 変数と定数 5 デ-タ入力
 
  1mtoga@sannet.ne.jp   登録日 '96. 6.15
URL : http://www.page.sannet.ne.jp/mtoga/index.html