Оператор unchecked применяется для проверки на переполнение, которое возникает при выполнении арифметических действий с целочисленными значениями.
Если в блоке unchecked происходит переполнение, то исключение не вызывается.
Если не указывать блок unchecked, то так же происходит переполнение. Тогда, какой смысл его указывать?
Если в блоке unchecked происходит переполнение, то исключение не вызывается.
Если не указывать блок unchecked, то так же происходит переполнение. Тогда, какой смысл его указывать?
Main.cs
using
System;
class
One {
-
byte
a = 254;
-
byte
b;
-
public
One(
byte
arg) {
-
b = arg;
-
}
-
public
void
Result1() {
-
//если произойдет переполнение, то исключение вызвано не будет
-
unchecked
{
-
Console.WriteLine(
"{0} + {1} = {2}"
, a, b, ((
byte
)(a + b)));
-
}
-
}
-
public
void
Result2() {
-
//то же самое без оператора unchecked
-
Console.WriteLine(
"{0} + {1} = {2}"
, a, b, ((
byte
)(a + b)));
-
}
}
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"введите число : "
);
-
byte
val =
byte
.Parse(Console.ReadLine());
-
One O =
new
One(val);
-
O.Result1();
-
O.Result2();
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
byte
a = 254;
-
byte
b;
-
public
One(
byte
arg) {
-
b = arg;
-
}
-
public
void
Result1() {
-
//если произойдет переполнение, то исключение вызвано не будет
-
unchecked
{
-
Console.WriteLine(
"{0} + {1} = {2}"
, a, b, ((
byte
)(a + b)));
-
}
-
}
-
public
void
Result2() {
-
//то же самое без оператора unchecked
-
Console.WriteLine(
"{0} + {1} = {2}"
, a, b, ((
byte
)(a + b)));
-
}
}
class
Program {
-
public
static
int
Main() {
-
Console.Write(
"введите число : "
);
-
byte
val =
byte
.Parse(Console.ReadLine());
-
One O =
new
One(val);
-
O.Result1();
-
O.Result2();
-
Console.ReadKey();
-
return
0;
-
}
}
введите число : 2
254 + 2 = 0
254 + 2 = 0
254 + 2 = 0
254 + 2 = 0