「C言語まとめ」に戻る |
---|
Release: | 1.0 |
---|---|
Date: | November 21, 2010 |
テスト環境
OS: Ubuntu10.10
はじめに¶
自分用に書いた、C言語の基礎をぱぱっと見れるようにしたものです。
人に見せられるようなものではないのですが、一応メモがわりということで。
■データの終わり¶
EOF と NULLwhile ((c=getchar()) != EOF){
...
}
while (gets(st) != NULL){
...
}
- getchar() は入力終了で EOF を返す。
- get() は入力終了で NULL を返す。
- fopen はオープン失敗で NULL を返す。
■文字列の内部表現¶
char str[6] = "HELLO";
char str[6] = { 'H','E','L','L','O','\0' };
文字列の終わりにはかならず \0 がつくので、文字列を格納するときには
「文字列の長さ + 1」とする。
■文字列リテラルの連結¶
char ss[] = "ABCD" "1234" "abcd";
printf("%s\n", ss); /* ABCD1234abcd と出力される */
printf("aaaa" "bbbb" "\n"); /* aaaabbbb と出力される */
■コメント¶
/* コメント開始
C言語のコメント
コメント終わり */
■予約語¶
Note
auto | double | int | struct |
break | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
const | float | short | unsigned |
continue | for | signed | void |
default | goto | sizeof | volatile |
do | if | static | while |
■関数、変数の名前について¶
- ▼使用できる文字
- [a-z][A-Z][0-9] と _ (アンダーバー)
▼命名規則
* 先頭文字には英大小文字または _ (アンダーバー)
* 長さは31文字まで。
* 予約後をつかってはいけない。
■定数¶
▼整数定数▼定数の型を指定する整数定数
区別 説明 例 8進数 先頭に「0」をつけて表記 (077など) 10進数 通常の10進数と同じ表記 (0以外ではじまる) 16進数 先頭に「0x」をつけて表記 (0x41, 0x1a, 0xAB03など)
▼浮動小数点定数
区別 説明 例 unsigned 型定数 文字 「 u 」 または 「 U 」 を後ろに付ける (12300Uなど) long 型定数 文字 「 l 」 または 「 L 」 を後ろに付ける (0Lなど) unsigned long 型定数 文字 「 ul 」 または 「 UL 」 (34UL)
▼定数の方を指定する浮動小数点定数定数
区別 説明 例 小数点形式 ピリオドを使って表記 (12.5, 2.45, .3など) 指数形式 「 e 」 または 「 E 」 を使って表記 (3.456e2=345.6, 6.78e-3=0.00678など)
区別 説明 例 float 型定数 「 f 」 または 「 F 」 を後ろに付ける (1.4142f, 1.0e-3fなど) long double 型定数 「 l 」 または 「 L 」 を後ろに付ける (10.43L, 5.23e-5Lなど)
▼文字定数
「’ ‘」で囲む。文字コードはASCII。
char = 'a'
「” “」で囲む。
char[] = "こんにちは"
■エスケープシーケンス¶
文字列 | 機能 |
---|---|
\a | ベル文字(内蔵ベルを鳴らす) |
\b | バックスペース |
\f | 改頁(クリア) |
\n | 改行 |
\r | 復帰(同じ行の先頭に戻る) |
\t | 水平タブ |
\v | 垂直タブ |
\\ | \を表示 |
\' | シングルクォーテーション(')を表示 |
\" | ダブルクォーテーション(")を表示 |
\? | ?を表示(3文字表記対策) |
\0 | NUL(終端文字) |
\ooo | 8進数 |
\xhh | 16進数 |
printf("\x1b" "3")
■データ型¶
データ型 | 説明 | 表現範囲 | byte(bit) |
---|---|---|---|
char | 1文字、または256種類の数値を保存 | -128〜127 | 1(8) |
signed char | 符号付きのchar型文字を保存 | -128〜127 | 1(8) |
unsigned char | 符号なしのchar型文字を保存 | 0〜255 | 1(8) |
データ型 | 説明 | 表現範囲 | byte(bit) |
short int | int は省略可能。整数を保存する | -32768〜32767 | 2(16) |
signed short int | 符号付のshort型整数を保存 | -32768〜32767 | 2(16) |
unsigned short int | 符号無しのshort型整数を保存 | 0〜65535 | 2(16) |
データ型 | 説明 | 表現範囲 | byte(bit) |
int | 整数の保存 | -2147483648〜2147483647 | 4(32) |
signed int | 符号付きのint型整数の保存 | -2147483648〜2147483647 | 4(32) |
unsigned int | 符号無しのint型整数の保存 | 0〜4294967295 | 4(32) |
データ型 | 説明 | 表現範囲 | byte(bit) |
long int | long型整数の保存 | -2147483648〜2147483647 | 4(32) |
signed long int | 符号付きのlong型整数の保存 | -2147483648〜2147483647 | 4(32) |
unsigned long int | 符号無しのlong型整数の保存 | 0〜4294967295 | 4(32) |
データ型 | 説明 | 表現範囲 | byte(bit) |
float | 浮動小数点を保存。実数型で最も最小 | 約10e-39〜10e37 | 4(32) |
double | 浮動小数点を保存。floatよりも大きなサイズを確保する | 約10e-309〜10e307 | 8(64) |
long double | 浮動小数点を保存。doubleよりも大きなサイズを確保する | 約10e-4933〜10e4931 | 12(96) |
sizeof() で調べてみてください。
#include <stdio.h>
int main(void)
{
int a = 1;
int b = 0;
printf("char型のサイズは%dバイトです。\n", sizeof(char));
printf("signed char型のサイズは%dバイトです。\n", sizeof(signed char));
printf("unsigned char型のサイズは%dバイトです。\n", sizeof(unsigned char));
printf("short int型のサイズは%dバイトです。\n", sizeof(short int));
printf("signed short int型のサイズは%dバイトです。\n", sizeof(signed short int));
printf("unsigned short int型のサイズは%dバイトです。\n", sizeof(unsigned short int));
printf("int型のサイズは%dバイトです。\n", sizeof(int));
printf("signed int型のサイズは%dバイトです。\n", sizeof(signed int));
printf("unsigned int型のサイズは%dバイトです。\n", sizeof(unsigned int));
printf("long int型のサイズは%dバイトです。\n", sizeof(long int));
printf("signed long int型のサイズは%dバイトです。\n", sizeof(signed long int));
printf("unsigned long int型のサイズは%dバイトです。\n", sizeof(unsigned long int));
printf("float型のサイズは%dバイトです。\n", sizeof(float));
printf("double型のサイズは%dバイトです。\n", sizeof(double));
printf("long double型のサイズは%dバイトです。\n", sizeof(long double));
printf("変数aのサイズは%dバイトです。\n", sizeof(a));
printf("式a+bのサイズは%dバイトです。\n", sizeof(a + b));
return 0;
}
■標準入龍津力関数(コンソール入出力関数)¶
▼printf()Note
% フラグ フィールド幅 .精度 変換装飾子 変換指定子
- | 左詰めで出力する(デフォルトでは右詰め) | ||||||||||
+ | 数値の前に + / - の符号を付ける(デフォルトでは - のみ) | ||||||||||
空白 | 正数の場合に先頭に空白を出力して負の場合と位置を揃える | ||||||||||
0 | 数値出力のときに先頭を0で埋める。ゼロバンディング | ||||||||||
# | 数値データ型に対応する別の出力形式を自動的に付加するようにする 対応する変換指定子により以下のとおり効果が変わる
|
printf("デフォルト[%d]\n", 123);
/* デフォルト[123] */
printf("8スペースを確保する[%8d]\n", 123);
/* 8スペースを確保する[ 123] */
printf("左詰め[%-8d]\n", 123);
/* 左詰め[123 ] */
printf("8スペースを確保し0で埋める[%08d]\n", 123);
/* 8スペースを確保し0で埋める[00000123] */
printf("8進数にする[%#o]\n", 123);
/* 8進数にする[0173] */
printf("16進数にする[%#x]\n", 123);
/* 16進数にする[0x7b] */
数値 | 出力の幅を指定する |
* | 対応する引数の値を数値指定とする |
int num = 123; n = 10;
printf("n引数で幅を指定する[%*d]\n", n, num);
/* n引数で幅を指定する[ 123] */
.数値 | 小数点以下の桁数、または最大表示数値を指定する。 対応する変換指定子により以下のとおり効果が変わる
| ||||||||||
.0 | 小数点以下の数字を表示しない(切り捨て) | ||||||||||
. | 同上 | ||||||||||
.* | 対応する引数の値を数値をする |
double num = 1.4142;
printf("デフォルト[%f]\n", num);
/* デフォルト[1.414200] */
printf("小数点以下3桁まで表示[%.3f]\n", num);
/* 小数点以下3桁まで表示[1.414] */
char ss[] = "abcdefghij";
printf("最大5文字表示[%.5s]\n", ss);
/* 最大5文字表示[abcde] */
h | 変換指定子がd, i, o, u, x, Xのとき対応する引数がshort型または unsigned shrot型であることを示す。変換指定子がnのとき対応する引数が short型へのポインタであることを示す。 |
l | 変換指定子がd, i, o, u, x, Xのとき対応する引数がlong型または unsigned long型であることを示す。以下同文。 |
L | 変換指定子がe, E, f, g, Gのとき対応する引数がlong double型 であることを示す。 |
short int sh = 1234;
printf("short int型を表示する[%hd]\n", sh);
/* short int型を表示する[1234] */
●変換指定子¶
o | 8進数で出力する |
d, i | 10進数で出力する |
x, X | 16進数で出力する。xは小文字、Xは大文字で出力 |
u | 符号無し10進数で出力する |
c | 文字を出力する |
s | 文字列を出力する |
f | 浮動小数点として出力する(float, double共)。標準の精度は6桁。 変換のとき適切な桁数にするための値の丸めを行う。 |
e, E | 指数形式で出力する。eは小文字、Eは大文字で出力。標準の精度は6桁。 |
g, G | f変換を適切な形式で行う。有効精度以上のときなど。 |
p | ポインタとして出力する。表示形式は環境依存。 |
n | %nがくるまでに出力された文字の数を対応するint*型引数に書き込む。 |
% | %自信。%%と書く |
double num = 3.14;
printf("適切な桁に丸める[%g]\n", num);
/* 適切な桁に丸める[3.14] */
Note
%c char 1文字を出力する “%c”
%s char * 文字列を出力する “%8s”, “%-10s”
%d int, short 整数を10進で出力する “%-2d”,”%03d”
%u unsigned int, unsigned short 符号なし整数を10進で出力する “%2u”,”%02u”
%o int, short,
unsigned int, unsigned short 整数を8進で出力する “%06o”,”%03o”
%x int, short,
unsigned int, unsigned short 整数を16進で出力する “%04x”
%f float 実数を出力する “%5.2f”
%e float 実数を指数表示で出力する “%5.3e”
%g float 実数を最適な形式で出力する “%g”
%ld long 倍精度整数を10進で出力する “%-10ld”
%lu unsigned long 符号なし倍精度整数を10進で出力する “%10lu”
%lo long, unsigned long 倍精度整数を8進で出力する “%12lo”
%lx long, unsigned long 倍精度整数を16進で出力する “%08lx”
%lf double 倍精度実数を出力する “%8.3lf”
つづく?¶
詳しくは以下の参考文献を参照。参考・引用¶
Note
C言語入門
初心者のためのポイント学習C言語
若葉プログラミング塾 ワンポイントTips
新・C言語入門 シニア編 (C言語実用マスターシリーズ)(林 晴比古さん)
「C言語まとめ」に戻る |
---|
0 件のコメント:
コメントを投稿