Страницы

Поиск по вопросам

понедельник, 26 ноября 2018 г.

Почему нельзя сложить в C# byte + byte?

Я знаю что нужно выполнить преобразование типов, но хотел бы разобраться в механизме. Почему этот код выдает ошибку?
byte a = 2;
byte b = a + 2; // ошибка


Ответ

Дело в том, что операции с байтами возвращают в результате int. Это не совсем очевидно на первый взгляд, но имеет смысл. Дело в том, что byte - довольно маленькая величина (от 0 до 255), и во многих случаях в результате арифметических операций с двумя байтовыми переменными, возникает переполнение, благодаря чему результат не поместился бы в переменную типа byte. Это явно не очень ожидаемое поведение (например при сложении 200 и 60 получилось бы не 260, ка можно было бы ожидать, а 4), поэтому было решено, что byte + byte = int

Комментариев нет:

Отправить комментарий