2021年11月26日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 466 count

数値の書き方: 型を持った数値・16進数の数値

Written By: 川俣 晶連絡先

この章のテーマ §

 ここでは数値の書き方を学びます。数値は、型を明示することも、8進数や16進数を明示することもできます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, メソッドの基礎, 整数型, 実数型

解説 §

 C#の数値には型があります。単に"123"のような数字を書いてもそれは型を持っています。

 整数で特に何も書かなければint、uint、long、ulong の型のうちその値を表すことができる最初のものになります。

 実数(小数点以下のある数)ならdoubleなります。

 数値の後ろに文字(サフィックス)を付加すると型を強制できます。

  • u/Uならuintかulong
  • l/Lならlongかulong
  • UL/Ul/uL/ul/LU/Lu/lU/luならulong
  • d/Dならdouble
  • f/Fならfloat
  • m/Mならdecimal

 たとえば、123はint型ですが、123fはfloat型です。

 これとは別に2進数と16進数を表記する方法があります。

 先頭に0xを付加すると16進数です。

 先頭に0bを付加すると2進数です。

 たとえば、0x10は16進数の10になりますが、0b10は2進数の10になります。

罠の数々 §

  • long型やulong型を使う時には、意外とサフィックスの文字の使用頻度が低い。int型から暗黙の型変換で昇格できるからだ。しかし、float型とdecimal型を使う時はサフィックスの文字は必須の知識となる。サフィックス文字を付けないとdouble型になるが、この型からの暗黙の変換は存在しないからだ
  • 16進数型、2進数型は存在しない。C#は内部で保存するときには常に2進数である。だから、0x10と16を区別する方法はない
  • 16進数、2進数の値には区切りとして"_"が許される。だから、0xff_ffと0xffffは同じ値になる

参考リンク §

整数数値型 (C# リファレンス)

浮動小数点数値型 (C# リファレンス)

サンプルソース: numbers §

sub("123", 123);

sub("123f", 123f);

sub("123d", 123d);

sub("123m", 123m);

sub("123.0", 123.0);

sub("123u", 123u);

sub("123l", 123l); ;

sub("123ul", 123ul);

Console.WriteLine($"0x123: {0x123}");

Console.WriteLine($"0b1010: {0b1010}");

void sub(string name, object val )=>Console.WriteLine($"{name}: {val.GetType().FullName}");

実行結果 §

123: System.Int32

123f: System.Single

123d: System.Double

123m: System.Decimal

123.0: System.Double

123u: System.UInt32

123l: System.Int64

123ul: System.UInt64

0x123: 291

0b1010: 10

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 なぜfloat a = 0.1;はエラーになるのだろうか。正しい理由を選ぼう。

  1. 0.1は2進数では割り切れないから
  2. float型の変数を0.1というdouble型の数値で初期化しようとしたから。0.1fなら上手く行く
  3. 変数aを利用するコードを欠いているから
  4. floatは型名ではないから
  5. 0.1は整数ではないから

[[解答]]

Facebook

COOL C# CREW Series

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2021年
11月
28日
checked/unchecked: オーバーフローは好き? 嫌い?
3days 48 count
total 464 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2021年
11月
25日
配列とインデクサ: データをまとめて処理するぞ
3days 5 count
total 451 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20211126090352
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.