Цитата Anonymоus:
В bat нету разграничения по типам переменных. Всё зависит от того, как вы с ними работаете. Математические операции над значением переменной можно проводить с помощью Set /A (обратитесь к встроенной справке за подробностями), если одно или все значения - нечисловые - они игнорируются (считаются нулём). Принудительно указать тип числа для Set /A можно добавив перед ним 0x (для шестнадцатеричных) или 0 (для восьмеричных). »
|
Ммм, тогда не ясно, как быть в таком случае. Есть задача - определить факториал введенного с клавиатуры числа. В самой программе для этого нужно использовать For /L. Также нужно предусмотреть проверки на ввод отрицательного числа и на ввод значений, превышающих максимально допустимые величины. Я написал вот такой скрипт:
Код:
::@echo off
set /a c = 1
set /p h = "Vvedite chislo, faktorial kotorogo neobhodimo vichislit: "
::set /a b = -12
if %b% lss 0 goto minus
for /L %%a in (1, 1, %b%) do set /a c = c * %%a
if %c% gtr 2147483647 goto mnogo
echo %c%
:minus
echo vvedeno otricatelnoe chislo
goto vihod
:mnogo
echo previsheno ogranichenie
goto vihod
:vihod
pause
В таком вариант он не работает. А если раскомментировать строку ::set /a b = -12, а предыдущую наоборот закомментировать, то все прекрасно получается.