見出し画像

ずっと定数 = リテラルだと思ってた。

IT専門学生のふじさわです。

タイトル通り、ずっと定数とリテラルを同じものを指す言葉だと思ってました。

これはプログラミングについての話なので、この言葉について簡単に説明したいと思います。

プログラミングの基本的な用語と文法

まずはプログラミングについて端的に説明します。

プログラミングとはコンピュータへの命令を書くことなのですが、例えば以下のように書きます。(今回の件に関係ない部分についてはプログラム言語ではなく日本語で書いています。)

TANKA = 100
kazu = 入力された数
goukei = kazu * TANKA

これは入力された個数に単価(100)をかけて合計金額を出すプログラムです。(掛け算は * で行います。)

この中で "kazu" や"goukei"のように毎回値が変わるものを変数と呼びます。

例えば入力された数が10なら「kazu = 10」となり、その後は"kazu"と言えば10を指すようになります。この値は何度でも上書きでき、次の入力が20なら"kazu"には20が代入されます。

定数とは?

さて、ここからが私が勘違いしていた内容になります。

先ほどのプログラムの中に変数があることを説明しましたが、それ以外の記述もありますよね?

例えば "TANKA"(単価) はプログラムをいつ実行しても100になります。

このように、常に一定の値を定数と呼びます。

これは具体的には、税率(めったに変わらない)、円周率、その他プログラム上変わらない値を使いまわす時などに使用するものになります。

ちなみに多くのプログラム言語では「見やすさのために定数名は全大文字」というルールがありますが、あくまで人の都合であってコンピュータに判断させるものではありません。

リテラルとは?

値をそのまま直で記述している部分をリテラルと呼びます。

先ほどの例で言うと、

TANKA = 100

の「 100 」の部分です。

他にも例えば

name = "Mike"

などと記述した場合でいう「 "Mike" 」も、変数などを使わず文字をベタ書きしているためリテラルと言えます。

どんな勘違いをしたの?

私はこれまで定数もリテラルも「変数じゃないもの」と認識していたので、定数(値が変わらないもの)をリテラルとも言う、と思っていました。

厳密にはリテラル(数値や文字をベタ書きしたもの)も値が変わらないという点で広義には定数に内包されているようですが、狭義ではこの2つは分けられます。


些細なことですが、最近ようやく間違えに気付いたので記事として残しておきます。

記事をご覧いただきありがとうございます! サポートしていただいたお気持ち以上に、noteをはじめいっぱい頑張ります!