Image

PythonとC言語を比較!データ型について特徴や違いをまとめてみた

PythonとC言語のデータ型の違いについてまとめています。C言語とPythonのデータ型の扱いに大きな違いはありません。C言語では変数を定義する際にデータ型を指定します。データ型とは整数を保存するためのものや数値データを保存するためのものなどいくつかの種類があります。

PythonとC言語のデータ型の違いって何だろう?



そもそもプログラミング用語でデータ型というものを聞いたことはありますか?

プログラミングでは莫大なデータ文字列を扱います。

もちろんPythonとC言語でも多くのデータ型を扱います。

それらすべてを一括りにするとコンピュータは処理をするとき訳がわからなくなってしまいます。

そのためデータ型というもので分類してコンピュータにデータを扱いやすくさせるのです。

何やら難しそうですがさほど難しい話ではありません。

イメージとしては文字と数字と記号のように、単純な分類です。

それではPythonとC言語のデータ型の違いについて順を追ってまとめていきます。

目次   

01. PythonとC言語のデータ型の大きさについて比較

02. PythonとC言語の文字列データの違い

03. C言語の型定義について

04. まとめ


01. PythonとC言語のデータ型の大きさについて比較


PythonにもC言語にもデータ型というものがあります

まずは少し複雑なC言語から学習していきましょう



char // 文字 1バイト
int // 整数 4バイト
float // 実数 4バイト 単精度実数
double // 実数 8バイト 倍精度実数
short int a; // 符号あり16ビット整数(-3276832767)
long int a; // 符号あり整数(通常32~64ビット)
long long int a; // 符号あり整数(通常64ビット)
signed char a; // 符号あり8ビット整数(-128127)
unsigned char a; // 符号なし8ビット整数(0255)
void // 値が無いことを示す特別な型


char文字列を扱います

文字はコンピュータの内部で、数字を割り振られています。そのためchar扱うことのできる数字-128から127までの整数ということになっています。

よく分かんないなと思ったら、char文字を扱うということを覚えておけば大丈夫です


int整数を扱います

プログラムの中でよく見る気がします

float単精度実数といい、double倍精度実数と言います

2つとも実数ですが基本的にプログラム中の実数はdoubleとして扱われます

小数点の数が多いか少ないかの違いです。

double型の方が細かい値を表示できます。

shortから下を修飾子と言います

プログラム内の計算をしたときに数値の値がintfloat値の範囲を超えたりしても結果を表示させるためのものです

つまり数値の範囲を通常より長くしたり、短くしたりすることができます

基本的には、charintfloatdoubleの基本データ型を覚えておけば大丈夫です

次にPythonを見てみましょう。



num = 1234 # 正の整数
num = 0o123 # 8進数 (0oで始まる数値は 8進数)
num = 0xffff # 16進数 (0xで始まる数値は 16進数)
num = 0b1100 # 2進数 (0bで始まる数値は 2進数)
num = 314511631632562L


Pythonの長整数はlongは末尾にLをつけます



num = 75171703462608485296829068904280943850938904138059810958409185901L


Pythonのlong型の表記には制限はありません



num = 54321L # Python 3 ではエラー(SyntaxError例外) Lは廃止された
num = 1.234 # 浮動小数点数
num = 3.14j # 虚数


相変わらずPythonはシンプルです。

Pythonでは、特殊な値以外は変数にそのまま代入して大丈夫です


02. PythonとC言語の文字列データ型の違い


次にPythonの文字列について学びましょう。

C言語と違って、Pythonでは文字列の扱いにちょっとしたルールがあります



str = "Hello world" # 文字列
str = 'Hello world' # 文字列
str = 'Hello \
Python'
str = 'iii\niii' # \n は改行とみなされる
str = r'iii\niii' # \n はバックスラッシュ(\)と小文字nとみなされる
str = """ 複数行にわたって書くことができます。
まさにこんなふうに。 """
print 'Hello' 'world' # 複数の文字列をスペースで区切れば連結できる
byte = b"\xe5\x76\x65"
utf8 = byte.decode() // バイト列から文字列に変換
print(utf8)

utf8 = "あ"
byte = utf8.encode() // 文字列からバイト列に変換
print(byte)


デコードバイト列文字列に変換することができます

逆にエンコード文字列バイト列にすることができます


03. C言語の型定義について


C言語の型定義についてさらに細かく学んでいきます



typedef unsigned int unint;

main() {
unint n = 123;
:


typedef既存の型に別の名前をつけて使用することができます



main() {
int a = 543;
long long_a;
long_a = (long)int_a; // int → long の型変換(キャスト)を行う
printf("%ld\n", long_a);
}


型名を付けることで、型変換を行うことができます

これをキャストと呼びます



main() {
int int_a = 123;
long long_a;
long_a = int_a; // int → long の型変換(キャスト)が行われる
printf("%ld\n", long_a);
}


暗黙的に型変換をすることも可能です

printfの%ldについてはprintfの説明の時に触れますが、%ldで型を指定しています。

ちなみに%ldはlong型を表します


04. まとめ


お疲れ様でした。

ここまで読んでいただきありがとうございました。

今回はPythonとC言語のデータ型の違いを確認しました。

さらにC言語のキャストやPythonの文字列の定義にも触れました。

今回の内容はプログラミングにおける文字列やデータの扱いの基本となります。