0Pricing
C Academy · レッスン

整数としての文字

ASCII 値です。

「整数としての文字」はCoddyKit上の無料C Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全4レッスンが含まれています。

文字は数値

Cでは、charは単なる小さな整数です。すべての文字にはASCII表で定義された数値があります。

文字'A'は数値65として格納され、'B'は66、その後も順に続きます。

#include <stdio.h>

int main(void) {
    char c = 'A';
    printf("The character %c has value %d\n", c, c);
    return 0;
}

ASCII値の表示

%d書式指定子を使うとcharを整数値として表示でき、%cを使うと文字として表示できます。

同じ変数を両方の方法で扱えます。

#include <stdio.h>

int main(void) {
    char letter = 'z';
    printf("As char: %c\n", letter);
    printf("As int:  %d\n", letter);
    return 0;
}

数字にもコードがある

文字'0'は数値の0ではありません。ASCII値は48です。

数字の文字'0'から'9'までは、48から57のコードに順番に割り当てられています。

#include <stdio.h>

int main(void) {
    printf("'0' = %d\n", '0');
    printf("'9' = %d\n", '9');
    return 0;
}

charから数字への変換

数字の文字は連続しているため、'0'を引くことで数字の文字を数値へ変換できます。

'7' - '0'は7になります。

#include <stdio.h>

int main(void) {
    char d = '7';
    int value = d - '0';
    printf("The digit value is %d\n", value);
    return 0;
}

文字の算術演算

char は整数なので、文字に対して計算できます。'A' に 1 を足すと、'B' のコードになります。

これは、ASCII ではアルファベットの文字が連続しているためです。

#include <stdio.h>

int main(void) {
    char c = 'A';
    char next = c + 1;
    printf("After A comes %c\n", next);
    return 0;
}

アルファベットをループする

char をループカウンターとして使い、'a' から 'z' までループできます。

このループでは、数値の場合と同じように文字コードを比較します。

#include <stdio.h>

int main(void) {
    for (char c = 'a'; c <= 'z'; c++) {
        printf("%c", c);
    }
    printf("\n");
    return 0;
}

大文字と小文字の差

ASCII では、大文字と小文字の間隔は 32 です。'a' は 97、'A' は 65 です。

したがって、'a' - 'A' は 32 になります。

#include <stdio.h>

int main(void) {
    printf("'A' = %d\n", 'A');
    printf("'a' = %d\n", 'a');
    printf("Gap = %d\n", 'a' - 'A');
    return 0;
}

手動で大文字・小文字を変換する

差が 32 であることが分かれば、小文字から大文字へは 32 を引いて変換できます。

これは、toupper が内部で行っている処理そのものです。

#include <stdio.h>

int main(void) {
    char lower = 'm';
    char upper = lower - 32;
    printf("%c becomes %c\n", lower, upper);
    return 0;
}

特殊文字

制御文字にもコードがあります。改行の '\n' は 10、タブの '\t' は 9、ヌル終端文字の '\0' は 0 です。

スペース文字は 32 です。

#include <stdio.h>

int main(void) {
    printf("newline = %d\n", '\n');
    printf("tab     = %d\n", '\t');
    printf("space   = %d\n", ' ');
    return 0;
}

char で小さな数値を扱う

char は通常、符号付きの場合は -128 から 127、符号なしの場合は 0 から 255 の値を保持します。

小さな整数を char に直接格納できます。

#include <stdio.h>

int main(void) {
    char small = 100;
    small = small + 5;
    printf("small = %d\n", small);
    return 0;
}

Caesar シフトを作る

これらの考え方を組み合わせると、単純な Caesar 暗号では、文字の算術演算を使って各文字を一定量ずつシフトできます。

ここでは、各文字を 3 つ先へシフトします。

#include <stdio.h>

int main(void) {
    char c = 'x';
    char shifted = 'a' + (c - 'a' + 3) % 26;
    printf("%c shifted by 3 = %c\n", c, shifted);
    return 0;
}

確認問題

文字を整数として扱う方法を理解できているか確認しましょう。

まとめ

C では、次のことを学びました。

  • char は ASCII コードを保持する小さな整数です。
  • %c は文字として、%d は数値として出力します。
  • 数字 '0'~'9' とアルファベットは連続しているため、算術演算を利用できます。
  • c - '0' で数字の char を値に変換でき、大文字と小文字の差は 32 です。

よくある質問

「整数としての文字」レッスンは無料ですか?

はい。「整数としての文字」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全4レッスンが含まれています。

「整数としての文字」で何を学びますか?

ASCII 値です。 ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「整数としての文字」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC Academyレッスンでコードを書いて実行できますか?

はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 整数としての文字
  2. ctype ライブラリ
  3. 文字の読み取り
  4. 文字ユーティリティの作成
← C Academyに戻る