C言語データ型と演算子
C言語はCombined Language(組合せ言語)の中英混合略称であり、高級言語の特徴もあれば、アセンブリ言語の特徴もあり、プロセス向けのプログラム設計言語である.
1.データ型(ANSI規格)
変数は、その値を変更できる量です.1つの変数には名前があり、メモリに一定のメモリユニットを占め、メモリユニットに変数の値を格納する必要があります.変数名は実際にはシンボルアドレスであり、プログラムに接続をコンパイルするときにシステムによって各変数名にメモリアドレスを割り当てます.プログラムで変数から値を取り、実際には変数名で対応するメモリアドレスを見つけ、そのメモリセルからデータを読み出す.
2.基本タイプ整数型 文字型(8ビット数、すなわち1バイトを占有する) 実型 列挙タイプ 型変換実型データを整数変数に付与する場合、実数の小数部を捨てる.整数データを単一、二重精度変数に割り当てると、数値は変わらず、変数に浮動小数点として格納されます.double型データをfloat変数に割り当てると、前の7桁の有効な数字が切り取られます.float型データをdouble変数に割り当てると、数値は変わらず、有効ビットは16ビットに拡張されます.文字型データを整数変数に割り当てる場合は、文字データ(8ビット)を整数変数の下位8ビットに配置します.2つのケースがあります.1つ目は、使用するシステムが文字を符号なしの量に処理したり、unsigned char型変数に値を付与したりした場合、文字の8ビットを整数変数の低8ビット、高8ビット補0に配置します.文字'376'(11111111110)をint型変数(000000001111110)に割り当てます.第二に、使用するシステム文字が記号付きで処理され、文字の最上位が0であれば、整数変数は8ビット補正0より高い.文字の最上位が1であれば、8ビットの高さがすべて1で、シンボル拡張と呼ばれ、数値を一定に保つことを目的としています.文字'376'(11111111110)をint型変数(1111111111111110)に割り当てる.int,short,long型データを1つのchar型変数に割り当てる場合,その下位8ビットのみをそのままchar型変数に送る.符号付き整数データ(int)をlong型変数に付与する場合、符号ビット拡張を行い、整数数の16ビットをlong型低16ビットに送り、int型データが正(符号ビット0)であればlong型変数の高16ビット補0とする.int型データが負の値(シンボルビットが1)である場合、long型変数の高さ16ビットは1ではなく、数値を一定に保つ.逆に、1つのlong型データをint型変数に割り当てると、long型データの低い16ビットをそのまま整数型変数に送るだけです.unsigned int型データをlong、int型変数に割り当てる場合、シンボル拡張の問題はなく、上位を0に補うだけです.非unsignded型データは、同じ長さのunsigned型変数に割り当てられ、そのまま割り当てられます.
3.演算子
4.プログラミングの3つの構造
(1).データ入出力関数 putchar関数(文字出力関数) getchar関数(文字入力関数) printf関数(フォーマット出力関数)printf(フォーマット制御、出力テーブル列)フォーマット制御:フォーマット説明と一般文字.ここで、フォーマットの説明は%とフォーマット文字からなり、例えば「%d」、「%f」など、出力されたデータを指定したフォーマット出力に変換する役割を果たす.通常の文字はそのまま出力される文字です.≪表列の出力|Output Table Columns|emdw≫:式で出力するデータの一部です.フォーマット文字:dフォーマット--10進数%dを整数データの実際の長さで出力%mdを指定した幅で出力します.データビット数がmより小さい場合は左端にスペースを埋め、mビットより大きい場合は実際のビット数で出力します.%ldはロング整数データ出力、ロング整数データに対しても幅出力 scanf(フォーマット制御、アドレスリスト) (2).ちくじこうぞう
(3).構造の選択
(4).じゅんかんこうぞう
1.データ型(ANSI規格)
変数は、その値を変更できる量です.1つの変数には名前があり、メモリに一定のメモリユニットを占め、メモリユニットに変数の値を格納する必要があります.変数名は実際にはシンボルアドレスであり、プログラムに接続をコンパイルするときにシステムによって各変数名にメモリアドレスを割り当てます.プログラムで変数から値を取り、実際には変数名で対応するメモリアドレスを見つけ、そのメモリセルからデータを読み出す.
( 、 、 、 )、 ( 、 、 )、 、
2.基本タイプ
[signed] int 16 -32768~32767
[unsigned] int 16 0~32767
[signed] short int 16 -32768~32767
[unsigned] short int 16 0~32767
long [int] 32
[unsigned] long [int] 32
の実際の数値は符号化で表され、1つの正数の符号化はその元の符号の形式と同じである.1つの負数であれば、その補符号を取得する方法は、その数の絶対値のバイナリ形式をビットで逆にしてから1を加える(またはシンボルビットが1で、残りはバイナリ絶対値で逆にし、最後のビットに1を加える).例えば、−10の補符号は、まずその絶対値10を取得し、次に10を取得するバイナリの原符号は1010であり、10の原符号に対して1111111110101(1つの整数が16ビットを占める)を逆にし、さらに1を加えて1111111111111110110を得、そのうち1番目がシンボルビットである.(-10は負の数で、その記号はビット1で、フォーマットは100000001010で、記号ビットは変わらず、各位は1111111110101を逆にして、それから1を加えて1111111111111110110を得ます).
,
\t , tab
\b ,
\r ,
\f ,
\\ "\"
\'
\"
\ddd 1 3 8 (1~377)
\xhh 1 2 16
は、文字定数を文字変数に格納し、実際には文字自体をメモリに格納するのではなく、その文字の対応するASCIIコードを記憶部に格納する.文字列定数は、二重アポトーシスで囲まれた文字のペアです.
float 32 6-7
double 64 15-16
long double 128 18-19
3.演算子
(1). (+ - * / %)
(2). (> < == >= <= !=)
(3). (! && ||)
(4). (<< >> ~ | ^ &)
(5). (= )
(6). (?:)
(7). (,)
(8). (*)
(9). (sizeof)
(10). (( ))
(11). (. ->)
(12). ([])
(13). ( ())
4.プログラミングの3つの構造
(1).データ入出力関数
#include<stdio.h>
main(){
char c = 'A';
putchar(c + 32);
//
putchar('
');
// a
}
#include<stdio.h>
main(){
printf("Please input one character : ");
char c = getchar();
printf("The character you just input is : ");
putchar(c);
putchar('
');
}
#include<stdio.h>
main(){
int num = 10;
printf("%d
", num);
printf("The sum of 3 and 4 is : %d
", (3 + 4));
//
printf("12345 3 %3d
", 12345);
}
、#include<stdio.h>
main(){
int num = -1;
printf("%d
", num); //-1
}
o形式を指定できます.整数(%o)を8進数で出力します.メモリの各ビットの値(0または1)を8進数で出力するため、したがって、出力される数値は符号を持たず、符号ビットも共に8進数の一部として出力される.#include<stdio.h>
main(){
int num = -1;
printf("%d,%o
", num, num); //-1,37777777777
}
xフォーマット--16進数で整数を出力します.負数(%s)#include<stdio.h>
main(){
int num = -1;
printf("%d,%o,%x
", num, num, num); //-1,37777777777,ffffffff
}
cフォーマットは表示されません.文字(%c)#include<stdio.h>
main(){
char c = getchar();
char c1 = 'a';
printf("%d,%c
", c, c1); //
putchar(c);
putchar('
');
}
sフォーマットを出力します.文字列(%s)%ms出力文字列がm列を占め、長さがmより大きい場合はすべて出力します.mより小さい場合は左端にスペースを埋めます.%-ms文字列の長さがmより小さい場合、文字列は右にスペースを補う.%m.ns出力はm列を占めますが、文字列の左端のn文字だけを取ってm列の右側に出力し、左側にスペースを埋めます.%-m.ns n文字はm列の左側に出力され、右にスペースが追加されます.n>mの場合、mはnの値をとる.#include<stdio.h>
main(){
//Hello World !
printf("%s", "Hello World !
");
printf("%3s", "Hello World !
");
printf("%20s", "Hello World !
");
printf("%-20s", "Hello World !
");
printf("%15.10s", "Hello World !
");
printf("%-20.10s", "Hello World !
");
printf("
");
/**
Hello World !
Hello World !
Hello World !
Hello World !
Hello WorlHello Worl
*/
}
fフォーマット--出力実数(単一、二重精度)(%f)%fは幅を指定せず、システムは自動的に指定し、整数部分はすべて出力し、6桁の小数を出力します.%m.nfは、出力されるデータがm列を占め、nビットの小数があることを指定します.-m.nf #include<stdio.h>
main(){
float f = 1234.5678912F;
printf("%f
", f);
printf("%10.5f
", f);
printf("%15.5f
", f);
printf("%-15.5f
", f);
/**
1234.567871
1234.56787
1234.56787
1234.56787
*/
}
e形式--実数(%e)%eを指数形式で出力します.出力データの幅と数値部分の小数点以下の桁数を指定しません.Cコンパイルシステムは決定します.%m.ne nは、出力データの小数点以下の桁数を表します.gフォーマット--実数を出力するために使用され、数値の大きさに応じてfまたはeフォーマットを自動的に選択し、意味のないゼロを出力しません.#include<stdio.h>
main(){
int a,b,c;
scanf("%d,%d,%d", &a, &b, &c);
printf("a = %d, b = %d, c = %d
",a , b, c);
/**
1,2,3
a = 1, b = 2, c = 3
*/
}
(3).構造の選択
(a).if( )
(b).if( ) 1 else 2
(c).if( ) else if 2 ...... else
(d).switch( ){
case 1 : 1
case 1 : 1
case 1 : 1
......
default : n
}
(4).じゅんかんこうぞう
(a).goto
if
(b).while( )
(c).do do( );
(d).for( 1; 2; 3)
(e).break
(f).continue