Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2016, 17:58   #1
Ковер
Пользователь
 
Регистрация: 18.09.2016
Сообщений: 30
Вопрос Типы данных и цикл for в C#

Здравствуйте.
Имеется следующий код.


И если изменить тип данных переменных a и b, на что-то отличное от int, то возникает ошибка.


Может кто-то объяснить, в чем дело?
Изображения
Тип файла: png 02.png (5.4 Кб, 156 просмотров)
Тип файла: png 01.png (11.1 Кб, 138 просмотров)
Ковер вне форума Ответить с цитированием
Старый 22.09.2016, 18:04   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

при сложении идет расширение до int, который в short/ushort не влазит.
а так вообще-то все написано в подсказке.

можете навести на знак минуса, последние студии отобразят типы.

+ на практике нет смысла уменьшать типы просто так.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 22.09.2016 в 18:09.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.09.2016, 18:13   #3
Ковер
Пользователь
 
Регистрация: 18.09.2016
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
при сложении идет расширение до int, который в short/ushort не влазит.
а так вообще-то все написано в подсказке.

можете навести на знак минуса, последние студии отобразят типы.

+ на практике нет смысла уменьшать типы просто так.
Я это пытался сделать для оптимизации кода, чтобы он меньше памяти занимал.
Т.е. это никак не уменьшить?
Ковер вне форума Ответить с цитированием
Старый 22.09.2016, 18:18   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это экономия на спичках, тем более как видите считается все равно в int'ах.

чтоб исправить ошибку прочитайте сообщение о ней, там есть подсказка.
в скобках
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.09.2016, 18:23   #5
Ковер
Пользователь
 
Регистрация: 18.09.2016
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
это экономия на спичках, тем более как видите считается все равно в int'ах.

чтоб исправить ошибку прочитайте сообщение о ней, там есть подсказка.
в скобках
Понял, спасибо большое за ответ.
Ковер вне форума Ответить с цитированием
Старый 22.09.2016, 18:25   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

более короткие типы обычно нужны при работе с внешними данными.
так как формат обычно не мы выбираем
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.09.2016, 19:14   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

можно написать a = (short) (x - 1), но это бесполезные телодвижения.
Не пытайтесь ничего оптимизировать, пока не прокачаетесь как разработчик.
В текущих компиляторах C# и других нормальных языков имеются достаточно неплохие оптимизаторы, которым хорошо известно как подобные вещи оптимизировать. Даже если везде пропишете short, оптимизатор может решить физически пихать в память int и все ваши попытки выиграть горсть байт на выходе не дадут никакой пользы, а будет только плохой код с кучей преобразований типов.
pu4koff вне форума Ответить с цитированием
Старый 22.09.2016, 19:52   #8
Ковер
Пользователь
 
Регистрация: 18.09.2016
Сообщений: 30
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
можно написать a = (short) (x - 1), но это бесполезные телодвижения.
Не пытайтесь ничего оптимизировать, пока не прокачаетесь как разработчик.
В текущих компиляторах C# и других нормальных языков имеются достаточно неплохие оптимизаторы, которым хорошо известно как подобные вещи оптимизировать. Даже если везде пропишете short, оптимизатор может решить физически пихать в память int и все ваши попытки выиграть горсть байт на выходе не дадут никакой пользы, а будет только плохой код с кучей преобразований типов.
Понял, спасибо.
Ковер вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типы данных Olper Microsoft Office Excel 12 08.12.2011 16:37
типы данных sp@ker Общие вопросы Delphi 8 26.04.2011 20:48
типы данных. svoi92 Помощь студентам 2 10.02.2011 13:45
Типы данных psycho-coder Паскаль, Turbo Pascal, PascalABC.NET 6 04.02.2010 20:03