Я пытаюсь передать переменную в метод, который принимает аргумент int. Моя переменная, однако, является беззнаковым длинным. Код выглядит примерно так:
unsigned long uLongNum = veryBigNumber;
int x = smallInteger; // usually between two and eight
myObject->myMethod(int y);
То, что я передаю (много раз), выглядит так:
myMethod(uLongNum / (ULongMax / x));
Цель состоит в том, чтобы разделить большой массив больших целых чисел на два новых массива в зависимости от размера числа. Мой код генерирует только нули, а не нули и нули в myObject (я могу сгенерировать единицы с помощью этого кода в VS2012).
Примечание: я задавал похожий вопрос пару дней назад, но мой вопрос был немного двусмысленным. Я надеюсь, что это проясняет двусмысленность. Благодарю.
unsigned long uLongNum = veryBigNumber; int x = smallInteger; // usually between two and eight void myMethod(int y);
И из вашего комментария:
… Я задаюсь вопросом, как опустить это долго в аргументе int.
Возможно что-то вроде:
unsigned long uLongNum = veryBigNumber;
if(uLongNum > std::numeric_limits<int>::max())
throw std::out_of_range();
int x = static_cast<int>(veryBigNumber);
myMethod(x);
...