「C言語」の版間の差分
提供: Wikinote
(→覚え書き) |
(→定数) |
||
| 行42: | 行42: | ||
=== 定数 === | === 定数 === | ||
| − | {| | + | {| border="1" |
| + | ! 定数の型 !! 例 | ||
| + | |- | ||
| + | ! <code>long</code> | ||
| + | | align="right" | 123456789'''L''' | ||
| + | |- | ||
| + | ! <code>unsigned</code> | ||
| + | | align="right" | 123'''U''' | ||
| + | |- | ||
| + | ! <code>unsigned long</code> | ||
| + | | align="right" | 123456789'''UL''' | ||
| + | |- | ||
| + | ! <code>double</code> | ||
| + | | align="right" | 123.456 | ||
| + | |- | ||
| + | ! <code>unsigned double</code> | ||
| + | | align="right" | 123.456'''L''' | ||
| + | |- | ||
| + | ! <code>float</code> | ||
| + | | align="right" | 123.456'''F''' | ||
| + | |- | ||
| + | ! 8 進数 | ||
| + | | align="right" | '''0'''123 | ||
| + | |- | ||
| + | ! 16 進数 | ||
| + | | align="right" | '''0x'''335F | ||
| + | |- | ||
| + | ! 16 進数 <code>unsigned long</code> | ||
| + | | align="right" | '''0x'''12AB'''UL''' | ||
|- | |- | ||
| − | |||
|} | |} | ||
| + | ※大文字、小文字の区別はない。 | ||
=== その他 (細かいこと) === | === その他 (細かいこと) === | ||
* <code>#define</code> 行の末尾にはセミコロンはいらない | * <code>#define</code> 行の末尾にはセミコロンはいらない | ||
* <code>extern</code> は'''宣言'''であって、定義ではない。つまり、領域の確保などは行われない。別ファイルで定義される変数などを利用する際に使う。''疑問'':ヘッダファイル中で <code>extern</code> 宣言した場合、定義するファイルからそのヘッダを <code>include</code> してもよいのか。 | * <code>extern</code> は'''宣言'''であって、定義ではない。つまり、領域の確保などは行われない。別ファイルで定義される変数などを利用する際に使う。''疑問'':ヘッダファイル中で <code>extern</code> 宣言した場合、定義するファイルからそのヘッダを <code>include</code> してもよいのか。 | ||
2009年2月3日 (火) 10:29時点における版
C 言語再考。
覚え書き
printf のフォーマット
% で始まり、変換指定子で終わる。以下のプログラムで実験。
#include <stdio.h>
int main(void) {
float f;
printf("1234567890 1234567890\n");
printf("---------------------\n");
f = 123.456;
printf("%f %f\n", f, -f); // デフォルト
printf("%.2f %.2f\n", f, -f); // 小数点以下桁 (精度) 指定
printf("%10f %10f\n", f, -f); // 最小幅指定
printf("%10.2f %10.2f\n", f, -f);
printf("%010.2f %010.2f\n", f, -f); // 0 で埋める
printf("%-10.2f %-10.2f\n", f, -f); // 左揃え
printf("%+10.2f %+10.2f\n", f, -f); // 必ず符号をつける
printf("%*.2f %*.2f\n", 15, f, 15, -f); // 引数による幅指定
printf("%*3$.2f %*3$.2f\n", f, -f, 20); // 引数による幅指定 (引数指定)
printf("%.*3$f %.*3$f\n", f, -f, 10); // 引数による精度指定 (引数指定)
return 0;
}
実行結果は下記のようになる。
$ gcc -o printf printf.c; ./printf
1234567890 1234567890
---------------------
123.456001 -123.456001
123.46 -123.46
123.456001 -123.456001
123.46 -123.46
0000123.46 -000123.46
123.46 -123.46
+123.46 -123.46
123.46 -123.46
123.46 -123.46
123.4560012817 -123.4560012817
定数
| 定数の型 | 例 |
|---|---|
long
|
123456789L |
unsigned
|
123U |
unsigned long
|
123456789UL |
double
|
123.456 |
unsigned double
|
123.456L |
float
|
123.456F |
| 8 進数 | 0123 |
| 16 進数 | 0x335F |
16 進数 unsigned long
|
0x12ABUL |
※大文字、小文字の区別はない。
その他 (細かいこと)
-
#define行の末尾にはセミコロンはいらない -
externは宣言であって、定義ではない。つまり、領域の確保などは行われない。別ファイルで定義される変数などを利用する際に使う。疑問:ヘッダファイル中でextern宣言した場合、定義するファイルからそのヘッダをincludeしてもよいのか。