0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C言語のcharについて

Last updated at Posted at 2025-08-07

char型とは

char型は、C言語で最も基本的なデータ型の一つで、1バイト(8ビット)のデータを格納するための型です。

1バイトは、sizeof演算子の基準となるサイズであり、sizeof(char)は常に1となります。

主な用途

  • 文字(キャラクター)を扱う
    ASCII文字などの1文字を格納するために使われます。
    1文字はシングルクォーテーション(')で囲んで表現します。
    例 : char c = 'A';

  • 1バイトの整数値を扱う
    符号付き(signed char)または符号なし(unsigned char)の1バイト整数を格納します。
    signed charの範囲は-128から127unsigned charの範囲は0から255です。
    例 : char data = 100;

※よくある間違い
'A'(シングルクォーテーション)は1文字です。

"A"(ダブルクォーテーション)は文字列です。末尾にヌル文字\0が自動で追加されるため、2バイト分のメモリを消費します。

char型の変数に"A"を代入しようとすると、型が違うためコンパイルエラーになります。

また、charsignedunsignedかは処理系に依存するため、255のような値を代入すると、予期せぬ結果(オーバーフローして-1になるなど)が生じることがあります。

範囲を意識した整数値を扱う場合は、明示的にsigned charまたはunsigned charを指定することが推奨されます。

項目 char型(文字) char型(整数) 文字列(char配列)
役割 1文字を表現 1バイト整数を表現 複数文字の並びを表現
宣言例 char c = 'A'; char data = 100; char str[] = "Hello";
サイズ 1バイト 1バイト strlen("Hello") + 1 = 6バイト
内部表現 ASCIIコード65 100という数値 H,e,l,l,o,\0の配列
出力形式 %c %d %s
#include <stdio.h>

int main(void) {
    char ch = 'A';

    unsigned char num = 255; 

    char str_literal[] = "Hello";
    char str_array[10] = {'C', '-', 'l', 'a', 'n', 'g', '\0'};

    char *str_pointer = "World";

    printf("--- 'A'の出力 ---\n");
    printf("文字として: %c\n", ch);
    printf("整数として: %d\n", ch);
    
    printf("\n");

    printf("--- 255の出力 ---\n");
    printf("整数として: %d\n", num);
    printf("文字として: %c\n", num);
    
    printf("\n");

    printf("--- 文字列の出力 ---\n");
    printf("文字列リテラル: %s\n", str_literal);
    printf("char配列: %s\n", str_array);
    
    printf("\n");
    
    printf("--- ポインタの出力 ---\n");
    printf("ポインタが指す文字列: %s\n", str_pointer);

    return 0;
}

出力結果

--- 'A'の出力 ---
文字として: A
整数として: 65

--- 255の出力 ---
整数として: 255
文字として: �

--- 文字列の出力 ---
文字列リテラル: Hello
char配列: C-lang

--- ポインタの出力 ---
ポインタが指す文字列: World

※コメントより

#include <stdio.h>

int main(void) {
    char c = 'A';
    
    printf("sizeof(c)の結果: %zu\n", sizeof(c));
    printf("sizeof('A')の結果: %zu\n", sizeof('A'));
    
    return 0;
}

出力結果

sizeof(c)の結果: 1
sizeof('A')の結果: 4

このように、文字リテラルとchar型変数は異なる扱いを受けるようです。

難しい...

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?