「C言語」の版間の差分

提供: Wikinote
移動: 案内検索
(定数)
(定数)
行80: 行80:
 
! 16 進数ビットパターン
 
! 16 進数ビットパターン
 
| align="right" | '\x1A'
 
| align="right" | '\x1A'
 +
|-
 +
! 文字列定数
 +
| align="right" | "hello, world"
 
|-
 
|-
 
|}
 
|}
 
※大文字、小文字の区別はない。
 
※大文字、小文字の区別はない。
 +
* 文字列定数は、コンパイル時に連結できる。例:<code>"hello, " "world"</code>
  
 
=== その他 (細かいこと) ===
 
=== その他 (細かいこと) ===
 
* <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:36時点における版

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
文字定数 'a'
8 進数ビットパターン '\013'
16 進数ビットパターン '\x1A'
文字列定数 "hello, world"

※大文字、小文字の区別はない。

  • 文字列定数は、コンパイル時に連結できる。例:"hello, " "world"

その他 (細かいこと)

  • #define 行の末尾にはセミコロンはいらない
  • extern宣言であって、定義ではない。つまり、領域の確保などは行われない。別ファイルで定義される変数などを利用する際に使う。疑問:ヘッダファイル中で extern 宣言した場合、定義するファイルからそのヘッダを include してもよいのか。