型 | サイズ | 設定できる値の範囲 | 備考 | |
整数 | 符号あり | |||
char | 1 | -128 ~ 127(コンパイラによっては 0 ~ 255) | ||
short | 2 | -32768 ~ 32767 | ||
long | 4 | -2147483648 ~ 2147483647 | ||
int | 4 | -2147483648 ~ 2147483647 | 32 bit CPU の場合。 | |
longlong | 8 | -9223372036854775808 ~ 9223372036854775807 | 64 bit CPU の場合に使用可。 | |
符号なし | ||||
unsigned char | 1 | 0 ~ 255 | ||
unsigned short | 2 | 0 ~ 65535 | ||
unsigned long | 4 | 0 ~ 4294967295 | ||
unsigned int | 4 | 0 ~ 4294967295 | 32 bit CPU の場合。 | |
unsigned longlong | 8 | 0 ~ 18446744073709551615 | 64 bit CPU の場合に使用可。 | |
実数 | 浮動小数点数 | |||
float | 4 | |||
double | 8 | |||
long double | 8 | |||
※サイズの単位はバイト。C 言語の規格において具体的なバイトは定義されておらず、 char ≦ short ≦ long ≦ longlong という関係性のみ定義されている。(int においては CPU が得意とするサイズだったはず) ※char, short, long, int, longlong のそれぞれの前に signed を付け「符号あり」を明示することもできる。 |
A + B | 加算 | A に B を加えた値を求める。 |
A - B | 減算 | A から B を引いた値を求める。 |
A * B | 乗算 | A に B を掛けた値を求める。 |
A / B | 除算 | A を B で割った値を求める。 |
A % B | A を B で割ったときの余りを求める。 |
A & B | AND | (1 と 1 の時のみ 1) 0 : 0 → 1 0 : 1 → 0 1 : 0 → 0 1 : 1 → 1 |
A | B | OR | (1 があれば 1) 0 : 0 → 0 0 : 1 → 1 1 : 0 → 1 1 : 1 → 1 |
A ^ B | XOR | (B が 1 なら A を反転) 0 : 0 → 0 0 : 1 → 1 1 : 0 → 1 1 : 1 → 0 |
~A | NOT | ビット反転 |
!A | Aが 0 の時は 1 、A が 0 以外の時 0 | |
A << B | 右シフト | |
A >> B | 左シフト |
A += B | 加算 | A に B を加えた値を A に代入。 |
A -= B | 減算 | A から B を引いた値を A に代入。 |
A *= B | 乗算 | A に B を掛け値を A に代入。 |
A /= B | 除算 | A を B で割った値を A に代入。 |
A %= B | A を B で割ったときの余りを A に代入。 | |
A <<= B | ||
A >>= B |
A == B | A と B が等しいか判定。 | ||
A != B | A と B が等しくないか判定。 | ||
A > B | A が B より大きいか判定。 | ||
A < B | A が B より小さい判定。 | ||
A >= B | A が B 以上(大きいまたは等しい)か判定。 | ||
A <= B | A が B 以下(小さいまたは等しい)か判定。 | ||
条件を 2 以上にする時(&& または ||) | A >= 2 && A <= 8 | A が 2 以上、且つ A が 8 以下か判定。 | |
A == 2 || A == 4 | A が 2 と等しい、または A が 4 と等しいか判定。 | ||
※条件を満たす場合 1(真)、条件を満たさない場合は 0(偽) |
strlen | 文字列のバイト数。
char szName[] = { "Mike" };
int nNemeLength = strlen( szName );
printf_s( "nNemeLength = %d\n", nNemeLength );
|
strcpy_s | 文字列の代入。
char szName[] = { "Mike" };
char szBuffer[64];
strcpy_s( szBuffer, _countof(szBuffer), szName );
printf_s( "szBuffer[] = %s\n", szBuffer );
|
strcat_s | 文字列の追加結合。
char szName[] = { "Mike" };
char szFamily[] = { "Gates" };
char szBuffer[64];
strcpy_s( szBuffer, _countof(szBuffer), szName );
strcat_s( szBuffer, _countof(szBuffer), szFamily );
printf_s( "szBuffer[] = %s\n", szBuffer );
|
strcmp | 文字列の比較。
int nCompare1 = strcmp( "Z", "A" );
printf_s( "nCompare1 = %d\n", nCompare1 );
int nCompare2 = strcmp( "A", "Z" );
printf_s( "nCompare2 = %d\n", nCompare2 );
int nCompare3 = strcmp( "A", "A" );
printf_s( "nCompare3 = %d\n", nCompare3 );
int nCompare4 = strcmp( "A", "a" );
printf_s( "nCompare4 = %d\n", nCompare4 ); ※第 1 引数を基準して大きければ 0 より大きく、小さければ 0 より小さく、等しければ 0 を返す。
|
stricmp | 文字列の比較(半角アルファベットの大文字と小文字を区別しない)。 int nCompare = stricmp( "A", "a" );
printf_s( "nCompare = %d\n", nCompare ); |
printf_s | 書式指定した文字列を作成し、文字列を標準出力へ出力。 printf_s( "%s is %d years old.\n", "Mike", 10 );
|
sprintf_s | 書式指定した文字列を作成し、文字列を変数へ代入。 char szBuffer[128];
int a = 16;
sprintf_s( szBuffer, _countof(szBuffer), "10進数の %d → 16進数では %x", a, a );
printf_s( szBuffer );
|
strtol | 文字列を整数(long型)に変換。 char szNumber1[] = { "128" };
char szNumber2[] = { "10" };
int a = 0;
a = strtol( szNumber1, NULL, 10 );
printf_s( "数値 1 = %d\n", a );
a = strtol( szNumber2, NULL, 16 );
printf_s( "数値 2 = %d\n", a );
|
%d | 整数を表示。 |
%x | 整数を16進数表示。 |
%f | 実数を表示。 |
%s | 文字列を表示。 |
%p | アドレスを表示。 |