Все числа могут быть выражены как продукт начал, например:
102 = 2 x 3 x 17
712 = 2 x 2 x 2 x 89
можно найти их, просто начав в 2 и просто продолжив делиться, пока результатом не являются несколько из числа:
712 / 2 = 356 .. 356 / 2 = 178 .. 178 / 2 = 89 .. 89 / 89 = 1
использование этого метода Вы не должны на самом деле вычислять начала: они все будут началами, на основе того, что Вы уже разложили на множители число как можно больше со всеми предыдущими числами.
number = 712;
currNum = number; // the value we'll actually be working with
for (currFactor in 2 .. number) {
while (currNum % currFactor == 0) {
// keep on dividing by this number until we can divide no more!
currNum = currNum / currFactor // reduce the currNum
}
if (currNum == 1) return currFactor; // once it hits 1, we're done.
}
Вы можете установить точку останова в Foo, откройте немедленное окно и выполните следующую команду:
? Foo(valueIn)
Это напечатает возвращаемое значение в Immediate Window.
Вы также можете скопировать выражение и вставить его в окно Watch, хотя я бы сделал это, только если я уверен, что у вызова нет побочных эффектов (иначе можно получить запутанные результаты).
Вы всегда можете переключиться в режим дизассемблера и выполнить отдельные инструкции. Возвращаемое значение будет в @eax (или @rax) непосредственно перед выполнением инструкции ret.
Нет, я не знаю, как это сделать. Я бы поставил точку останова в вызывающей программе и посмотрел бы там на возвращаемое значение.
Вы также можете выделить любое выражение в отладчике и щелкнуть правой кнопкой мыши -> быстрое наблюдение. Это выполнит выражение (при условии, что оно действительное) и выдаст вам значение.
Вы всегда можете использовать окно наблюдения для оценки вызовов функций.
Foo (valueIn);
Это будет работать, только если ваш Proxy.Bar (valueIn) не зависит от времени.
Обходной путь - использовать переменную результата в стиле Паскаля:
public string Foo(int valueIn)
{
string result;
if (valueIn > 100)
result = Proxy.Bar(valueIn);
else
result = "Not enough";
return result;
}
На мой взгляд, это хороший стиль для длинных функций. Для очень коротких, таких как приведенная выше, это можно считать излишеством, но это позволяет обойти проблему отладчика.