Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 07.02.2013
Сообщений: 78

Тип byte

30.01.2023, 11:10. Показов 554. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Почему операция: byte z = x + y
вызывает сообщение об ошибке, будто int не конвертируется в byte?
Ведь оба операнда byte:

byte x = 5;
byte y = 3;
byte z = x + y;

Причем сложение литералов допускает byte z = 5 + 3;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2023, 11:10
Ответы с готовыми решениями:

Преобразовать тип byte в short
Привет. Скажите пожалуйста. Здесь я нашел таблицу явных числовых преобразований http://msdn.microsoft.com/ru-ru/library/yht2cx7b.aspx ...

Как преобразовать тип byte[] в string
пытался преобразовать string x = Convert.ToString(data);

Не удается неявно преобразовать тип byte в string
Вообщем, добавил в проект файл: settings.json, где собираюсь в дальнейшем сохранять все настройки приложения. Но, после того как я...

8
628 / 392 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
30.01.2023, 12:08
byte z =(byte)(x + y);
1
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
30.01.2023, 12:12
Цитата Сообщение от gfer Посмотреть сообщение
Почему операция: byte z = x + y
вызывает сообщение об ошибке, будто int не конвертируется в byte?
1. Потому что в результате сложения может получиться число больше чем byte.
2. Потому что оператор + возвращает тип int, соответственно нужно явное приведение типов если вы хотите результат сложения поместить в переменную типа byte.
2
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
30.01.2023, 12:16
Цитата Сообщение от gfer Посмотреть сообщение
Почему операция: byte z = x + y
вызывает сообщение об ошибке, будто int не конвертируется в byte?
Посмотрите документацию: Структура Byte.
Арифметические операции в этом типе не определены.
Арифметические операции определены в типе Структура Int32.
Так же byte неявно приводится к int, поэтому к нему применяются операции int (Int32). И результат они возвращают в этом же типе.

Цитата Сообщение от gfer Посмотреть сообщение
Причем сложение литералов допускает byte z = 5 + 3;
Литералы складывает и приводит к типу компилятор, в сборку попадает не сложение литералов, а уже результат сложения.
То есть по факту это равносильно byte z = 8;

Добавлено через 1 минуту
Цитата Сообщение от Someone007 Посмотреть сообщение
Потому что в результате сложения может получиться число больше чем byte.
Это точно не аргумент.
В сложении интов результат тоже может получиться больше диапазона инт.
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
30.01.2023, 12:31
Цитата Сообщение от Элд Хасп Посмотреть сообщение
То есть по факту это равносильно byte z = 8;
8 — тоже int
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
30.01.2023, 12:44
Цитата Сообщение от kolorotur Посмотреть сообщение
8 — тоже int
Но компилятор сам приводит литералы.
Разве не так?
0
628 / 392 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
30.01.2023, 13:01
Цитата Сообщение от Someone007 Посмотреть сообщение
Потому что в результате сложения может получиться число больше чем byte
На самом деле странное объяснение. При сложении 2 интов тоже может быть переполнение. Да вообще это с любым типом может получиться
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
30.01.2023, 13:01
Цитата Сообщение от Элд Хасп Посмотреть сообщение
компилятор сам приводит литералы
Константные выражения, результат которых умещается в тип переменной.
Литерал — простейший случай общего правила.

Вот это тоже легально:
C#
1
2
3
const byte x = 5;
const byte y = 3;
byte z = x + y;
Или это:
C#
1
2
const int i = -10;
byte b = ~i;
А на это уже ругнется:
C#
1
2
const int i = 255;
byte b = i + 1;
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
30.01.2023, 13:08
Цитата Сообщение от kolorotur Посмотреть сообщение
Константные выражения, результат которых умещается в тип переменной.
Ну, я так думал.
Просто не стал детально расписывать:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Литералы складывает и приводит к типу компилятор, в сборку попадает не сложение литералов, а уже результат сложения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2023, 13:08
Помогаю со студенческими работами здесь

Не удаётся неявно преобразовать тип string в byte[]
Добрый вечер. "Позаимствовал" код блочного шифра на C# для своей курсовой, оригинальный код консольный, переделал под Виндоус Формы. В 124...

Создать тип, который будет являться и byte[] и BitmapSource
В WPF приложении изображение биндится на свойство. На свойство приходит как само изображение BitmapSource, так и массив байт (WPF сам...

Не удаётся неявно преобразовать тип "int" в тип "byte"
Почему нельзя сделать: byte a = 10; byte b = 20; byte c = 10*20; Говорит "не удаётся неявно преобразовать типо "int" в...

Какой тип (int или byte) использовать для операций с большими массивами
Всем здравствуйте. Есть 2 массива. Массивы неизвестной, очень большой длинны. Я в циклах перемножаю эти массивы. Для сохранения результатов...

Перевести строку, содержащую данные массива байт (byte[]) в byte[]
Приветствую. Есть такая строка - "" Как её перевести в массив байт? 1. Допустим, что первый шаг это через рег. выражения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru