C言語 #9: 文字データ型(Character Data Types)

独習C

C言語には、文字を扱うためのデータ型があります。文字データ型は、文字を格納し、操作するために使用されます。ここでは、C言語の文字データ型について詳しく説明します。

1.文字データ型の基本

文字データ型は、基本的に1バイトのメモリを使用し、ASCIIコードを使用して文字を表現します。

char letter = 'A';
char digit = '1';

2.符号付きおよび符号なしのchar

char型は符号付きまたは符号なしで宣言できます。符号付きcharは-128から127までの範囲の値を取り、符号なしcharは0から255までの範囲の値を取ります。

signed char s_letter = -65;  // 符号付きchar
unsigned char u_letter = 65; // 符号なしchar

3.文字とASCIIコード

文字は内部的に整数値(ASCIIコード)として扱われます。例えば、’A’は65に、’a’は97に相当します。

#include <stdio.h>

int main() {
    char letter = 'A';
    printf("Character: %c\n", letter); // 文字として出力
    printf("ASCII Value: %d\n", letter); // ASCIIコードとして出力
    return 0;
}

4.文字列(Character Strings)

文字列はchar型の配列として表現されます。文字列の最後には必ずヌル文字(’\0’)が必要です。

#include <stdio.h>

int main() {
    char greeting[] = "Hello, World!";
    printf("%s\n", greeting); // 文字列を出力
    return 0;
}

5.文字データ型の操作

文字データ型の操作には、基本的な算術演算や比較演算を使用することができます。

5.1.文字の算術演算

文字データ型に対して算術演算を行うと、ASCIIコードの値を基に計算が行われます。

#include <stdio.h>

int main() {
    char letter = 'A';
    letter += 1;
    printf("Next Character: %c\n", letter); // 'B'が出力される
    return 0;
}

5.2.文字の比較演算

文字の比較は、ASCIIコードの値に基づいて行われます。

#include <stdio.h>

int main() {
    char letter1 = 'A';
    char letter2 = 'B';
    if (letter1 < letter2) {
        printf("%c is less than %c\n", letter1, letter2); // 'A is less than B'が出力される
    }
    return 0;
}

6.文字データ型の例

以下に、char型と文字列を使用する例を示します。

#include <stdio.h>

int main() {
    char letter = 'C';
    signed char s_letter = -65;
    unsigned char u_letter = 65;

    // 文字とそのASCIIコードを出力
    printf("Character: %c\n", letter);
    printf("ASCII Value of %c: %d\n", letter, letter);
    printf("Signed Character: %c, ASCII Value: %d\n", s_letter, s_letter);
    printf("Unsigned Character: %c, ASCII Value: %d\n", u_letter, u_letter);

    // 文字列の宣言と初期化
    char greeting[] = "Hello, C Programming!";
    printf("Greeting: %s\n", greeting);

    // 文字列の各文字を出力
    for (int i = 0; greeting[i] != '\0'; i++) {
        printf("Character: %c, ASCII Value: %d\n", greeting[i], greeting[i]);
    }

    return 0;
}
購読
通知
0 Comments
Inline Feedbacks
View all comments