То, что я имею в виду, я мог построить общую процедуруМожно ли проверить, приводит ли добавление двух переменных к переполнению?
public bool Overflows<T> (T a, T b)
{
// returns true or false based on whether
// a + b overflows
}
, который можно использовать как
byte b1 = 255,
b2 = 1;
Console.WriteLine("Does {0} + {1} oveflow? {2}", b1, b2, Overflows(b1,b2) ? "Yes : "No"); // Answer should be "Yes" here
???
Я думаю, в случае byte
s Я могу посмотреть, (a+b) < a
и (a+b) < b
. например Я знаю, что 255+1
переполняется, потому что результат, если 0
, который меньше 255
и 1
. Или я могу бросить их в более крупные типы данных и проверить, как
return ((int)a + (int)b) > (int)Byte.MaxValue;
, но это не будет работать на всех числовых типов, которые имеют +
оператора.