Работа индексатора и значимая переменная типа uint - C#

Узнай цену своей работы

Формулировка задачи:

В общем снова какие-то грабли Вот код.
class PwrOfTwo
    {
        public uint this [int index]
        {
            get 
            {
                return (index > 0) ? pwr(index) : 1;        
            }
        }
 
        uint pwr (int i)
        {
            uint result = 1u;
            while (i > 0)
            {
                i--;
                result *= 2u;
            }
            return result;
        } 
    }
И вот чуток
 class Program
    {
        static void Main(string[] args)
        {
            PwrOfTwo pwr = new PwrOfTwo();
            Console.Write(pwr[32]);
        }
    }
Изучал значит я тут индексаторы и свойства, ну вроде степени двойки нормально работали до всех положительный чисел типа int, однако мне захотелось разширить количество степеней ну и попробывал вставить везде uint. В результате как вы уже поняли ничего не получилось на последней итерации цикла while т.е. 32 переменная result сбрасывается в 0. На сколько я понимаю когда самый старший бит в uint должен стать 1 то все значение соскакивает в 0. Что не так? Help

Решение задачи: «Работа индексатора и значимая переменная типа uint»

textual
Листинг программы
result = (result << 1) | 1;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы