ホームページ  >  記事  >  バックエンド開発  >  C# の問題を 1 つずつ解決します (7): チェック済みとチェックなし

C# の問題を 1 つずつ解決します (7): チェック済みとチェックなし

黄舟
黄舟オリジナル
2016-12-22 14:20:341091ブラウズ

C# デフォルトでは、定数式の値が対象の型の最大値を超えるとコンパイルエラーが発生します。

C# の問題を 1 つずつ解決します (7): チェック済みとチェックなし


ターゲットのデータ型が非定数式のデータを収容できない場合、データは代入中に切り捨てられます。

class Program 
{ 
static void Main(string[] args) 
{ 
int n = int.MaxValue;//n=2147483647 
n = n + 1; 
System.Console.WriteLine(n); 
} 
}

C# の問題を 1 つずつ解決します (7): チェック済みとチェックなし

これは、以前はメモリ上の int.MaxValue が 32 ビットの 1 であり、1 を追加すると 32 ビットの 0 になったことで説明できます。このとき、0 は負の符号とみなされます。したがって、-2147483648 が取得されます。

上記のコードをチェックされたブロックに配置すると、System.OverflowException タイプが発生します。

class Program 
{ 
static void Main(string[] args) 
{ 
checked 
{ 
int m = int.MaxValue; 
m = m + 1; 
System.Console.WriteLine(m); 
} 
} 
}

C# の問題を 1 つずつ解決します (7): チェック済みとチェックなし

C# のチェックされたブロックに配置された変数は、実行時にオーバーフロー代入が発生した場合に例外を引き起こします。

unchecked は、整数の算術演算と変換のオーバーフロー チェックをキャンセルするために使用されます。

上記は C# の難しさの内容 (7) です: チェックが入っている場合とチェックされていない場合の詳細については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。