C言語の暗黙的な型変換を使って大文字「A」のASCII値を求める方法
暗黙的な型変換とは
暗黙的な型変換(implicit conversion)とは、プログラマが明示的に指定しなくても、コンパイラが自動的に小さなデータ型をより大きなデータ型へ変換する仕組みです。C言語では、char型とint型が同じ式の中で混在すると、char型は自動的にint型へ昇格(整数拡張)されます。
例えば、大文字「A」のASCII値は65です。本記事では、文字「A」を入力として与え、暗黙的な型変換を利用してそのASCII値である65を取得する方法を解説します。
サンプルコード:大文字「A」の場合
以下は、暗黙的な型変換を使用して大文字「A」のASCII値を求めるプログラム例です。
#include<stdio.h>
int main(){
char character = 'A';
int number = 0, value;
value = character + number; // 暗黙的な型変換
printf("The ASCII value of A is: %d\n",value);
return 0;
}実行結果
文字「A」のASCII値は65です。C言語の型キャストの仕組みにより、コンパイラはchar型の文字を自動的にint型へ変換します。そのため、式 value = character + number は 65 + 0 = 65 として評価されます。
したがって、出力結果は次のようになります。
The ASCII value of A is: 65
サンプルコード:他の文字の場合
今度は別の文字「P」を例にとり、そのASCII値がどのように求まるか確認してみましょう。
#include<stdio.h>
int main(){
char character = 'P';
int number = 0, value;
value = character + number; // 暗黙的な型変換
printf("The ASCII value of P is: %d\n",value);
return 0;
}実行結果
文字「P」のASCII値は80です。ここでも同様に、コンパイラがchar型の文字を自動的にint型へ変換するため、式 value = character + number は 80 + 0 = 80 として評価されます。
したがって、出力結果は次のようになります。
The ASCII value of P is: 80
まとめ
C言語では、char型の文字をint型の変数と演算させるだけで、暗黙的な型変換によって自動的にASCIIコード(整数値)を取得できます。明示的なキャスト((int)character)を書かなくても、整数拡張のルールによりchar型がint型へ昇格されるため、シンプルなコードで文字コードを扱うことが可能です。
-
C言語の文字操作を徹底解説!宣言方法と入出力関数の使い方
Cプログラミング言語において、文字(character)は英大文字(A〜Z)、英小文字(a〜z)、数字(0〜9)、空白(ホワイトスペース)、または特殊記号のいずれかとして扱われます。文字の宣言方法C言語で文字型変数を宣言する際は、char 型を使用します。文字定数はシングルクォーテーション( )で囲んで指定します。char a = A; /* 文字定数を使用した宣言 */このように宣言することで、変数 a に1文字分のデータを格納できます。文字入出力関数の種類C言語には、文字を入出力するための関数がいくつか用意されています。代表的なものは以下の3組です。scanf / printf: 書式指定
-
C言語のシフト演算とは?左シフト・右シフト・補数の基本をわかりやすく解説
問題 C言語を使用して、ある数値に対する左シフト・右シフト・補数(ビット反転)を求める簡単なプログラムを作成するには、どのようにすればよいのでしょうか。 解決方法 左シフト(<<) 変数の値を1ビットだけ左へシフトすると、その値は2倍になります。「a × 2」を計算したのと同じ結果です。 例:a = 10 の場合、a << 1 = 20 右シフト(>>) 変数の値を1ビットだけ右へシフトすると、その値は元の半分になります。「a ÷ 2」の整数除算と同じ結果です。 例:a = 10 の場合、a >> 1 = 5 サンプルプログラム 以下は、シ