49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
1

Преобразование типов в выражениях

12.04.2013, 11:21. Показов 1413. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть правило, например:
"Если один операнд имеет тип decimal, то и второй операнд продвигается к типу decimal (но если второй операнд имеет тип float или double, результат будет ошибочным).
Если один операнд имеет тип uint, а второй - тип sbyte, short или int, то оба операнда продвигаются к типу long."

И если рассматривать эти правила на примере:
Кликните здесь для просмотра всего текста
C#
1
2
3
byte b;
b = 10;
b = (byte)(b * b);

то становится не понятно, где тут первый, а где второй операнд.

И суть "продвижения" операндов к типу, тоже как бы в тумане. Я могу лишь предположить, что при продвижении беззнакового операнда к типу со знаком, его старшему разряду устанавливается значение. А также все разряды дополняются необходимым количеством разрядов, для перевода в более крупный тип. Однако не понятно, почему тогда:
"Если один операнд имеет тип ulong, то и второй операнд продвигается к типу ulong (НО ЕСЛИ ВТОРОЙ ОПЕРАНД ИМЕЕТ ТИП sbyte, short, int или long, РЕЗУЛЬТАТ БУДЕТ ОШИБОЧНЫМ)."
Ведь для приведения мелкого типа к крупному, если я все правильно понял в этой операции, требуется дополнение недостающих разрядов, и изменение состояния старшего разряда.

Шилдт, C# 4.0 полное руководство, стр.93
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2013, 11:21
Ответы с готовыми решениями:

Приведение типов в выражениях
Читаю сабжевую главу Шилдта, где поясняется как именно ведет себя компилятор (или правильней...

Преобразование типов
Что-то совсем в тупик зашла.Как здесь явно преобразовать? public SortedDictionary<char, double>...

Преобразование типов
Подскажите как в c# с массивом int можно поработать как с массивом byte; Как в с++, например, int...

Преобразование типов
Есть метод, который принимает на вход переменную типа IEnumerable<DataRow>; у меня есть...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2013, 11:21
Помогаю со студенческими работами здесь

Преобразование типов
подскажите как преобразовать правильно значение стринг в булеан мой пример: namespace...

Преобразование типов
Я унаследовал стандартный класс Socket в своем классе ASock. Вопрос о приведение типа Socket к...

Преобразование типов
Почему работает данный код??? Разве существует неявное преобразование int (переменная х) в...

Преобразование типов
Как преобазовывать(копировать) ListBox.lines в List<string> Description = new List<string>(); и...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru