Страницы

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

вторник, 24 декабря 2019 г.

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

#c_sharp


Я знаю что нужно выполнить преобразование типов, но хотел бы разобраться в механизме.
Почему этот код выдает ошибку?

byte a = 2;

byte b = a + 2; // ошибка

    


Ответы

Ответ 1



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

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

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