スポンサーリンク
※サイト運営にサーバーは必須です※
 ~ ロリポップ! 
はコスパのよい初心者向けサーバーです~
   
![]()
目次
リテラルとは
リテラル(literal)とは、英語では「文字通りの」といった意味を持ちます。
プログラムにおいて、「リテラル」とは、「変数」の対となる言葉です。
例えば、変数を宣言した時に、int型であれば、10などの数値が入り、string型であれば、”Hello”などの文字列が入るでしょう。
10やHello”に対してリテラルという言葉を使用します。
このように、変数と違い、見た通り(文字通り)解釈できる数値や文字列のことを「リテラル」と呼びます。
C#においてリテラルは、以下のようなリテラルがあります。
整数リテラル
 数値型で取り扱う数値。
 (例)20
浮動小数点リテラル
 小数点を含んだ数値。サフィックスを指定しない場合、double型として解釈されます。
 (例)1.23、1.7e3
※数値リテラルは、整数リテラルと浮動小数点リテラルの2つの意味を含んだ言葉になります。
文字リテラル
 char型で取り扱う文字。シングルクォーテーション(‘)で囲む。
 (例)’H’、’う’
文字列リテラル
 string型で取り扱う文字。ダブルクォーテーション(“)で囲む。
 (例)”こんにちは” 、”このサイトのドメインはict119.com”
論理値リテラル
 bool型で取り扱う真偽値。
 (例)true、false
その他(発展編)
16進数のリテラル
16進法(hexadecimal) を使用したい場合は、数字の先頭に0xまたは0Xを付けます。
16進法の数字は0~9とa~fのアルファベットで構成されます。アルファベットは小文字と大文字の使用が可能です。
2進数のリテラル
2進法(binary)を使用したい場合は、数字の先頭に0bまたは0Bを付けます。
※C#7.0から2進数のリテラルが導入されました。
※いきなりアルファベット(xまたはb)から始まらないのは型の解釈がスムーズにできるようにするためでしょう。例えば、変数は、最初の1文字目に数字を使うことを許されていません(命名規則上)。逆に言えば、最初の一文字目で、数値かそれ以外か(変数などの識別子)を判断しています。16進法(2進法)のリテラルで、最初に一文字目に数字の0を持っている設計になっているのは、数値かそれ以外か判別を楽に行うためでしょう。
ソースコード(16進法と2進法)
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27  | 
						using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Literal01 {     class Program     {         static void Main(string[] args)         {             int num16;             num16 = 0x1a;             Console.WriteLine("1a(16進法):"+num16);             num16 = 0XFF;             Console.WriteLine("FF(16進法):" + num16);             int num2;             num2 = 0b101;             Console.WriteLine("101(16進法):" + num2);             num2 = 0B0111;             Console.WriteLine("0111(2進法):" + num2);         }     } }  | 
					
実行結果
1a(16進法):26
 FF(16進法):255
 101(16進法):5
 0111(2進法):7
サフィックスとは
サフィックス(suffix)とは、英語では「接尾語」といった意味を持ちます。
数値リテラルの型を明示したい場合にサフィックスを使用します。
| データ型 | サフィックス | 
| ulong | u(U) | 
| long | l(L) | 
| ulong | ul(UL,uL,Ulなど) | 
| double | d(D) | 
| float | f(F) | 
| decimal | m(M) | 
サフィックスは小文字でも大文字でも構いません。
ただし、小文字のエル(l)は数字のイチ(1)と紛らわしいので、使用を控えましょう。
※Visual Studioで小文字のエル(l)をサフィックスとして使用すると警告を受けます。
※ulongのサフィックスは片方が小文字で、もう片方が大文字表記することは可能です、また、UとLの順番も変更することができます。例えば、Luというサフィックスでもulong型と認識してくれます。
long型で数字を使いたいからといって、必ずしもサフィックスLを付ける必要はないです。
なぜなら、数値リテラルは、指定しなければint型として扱われますが、long型はint型を暗黙的に変換できるからです。
逆に、float型とdecimal型は暗黙的にdouble型を変換できません。
float型(32ビット)とdouble型(64ビット)を比較するとわかりますが、float型の方が持っている情報量は少ないです。
decimal型(10進演算)は、double型(2進演算)の完全な上位互換というわけではありません。そのため、どうしたってうまく変換できない部分が生じることがあります。
以上の点で、float型とdecimal型を扱いたい場合は、サフィックスを付ける必要があります。(明示的なキャストを行えば、サフィックスの使用を回避できますが、サフィックスを使用した方が断然楽です)
※long型ではサフィックスを指定しなくてもエラーになりませんが、float型とdecimal型ではエラーになります。(下図)

ソースコード(サフィックスの付け方)
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23  | 
						using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Suffix02 {     class Program     {         static void Main(string[] args)         {             uint u = 100u;//100U             long L = 200L;//200lは警告をうける             ulong uL = 300uL;//300Luでも可能             double d = 5.0;//5.0d、5.0Dと明示的にサフィックスを付けなくてもよい             float f = 10.0f;//10.0Fも可能             //float f = (float)10.0;//明示的なキャスト                             decimal de = 20.0M;//20.0mも可能         }     } }  | 
					
関連記事
~ギャンブルに絶対儲かる必勝法があるのだろうか?~
私(サイト主)はこの疑問に対して非常に興味を持ち、プログラミングで検証してみました。
このサイトを応援してもいいかなと思う人はぜひとも購入を検討してみてください。
