Тема: CMD/BAT: Модуль числа |a| без условных операций
Написал функцию для нахождения модуля числа без использования условных операций. Вот:
@ echo off
setlocal enabledelayedexpansion
set /p a=Enter Integer:
call :abs %a%
echo abs(%a%) = %errorlevel%
exit /b
:abs
:: Модуль числа
setlocal
set /a abs="((%1)>>31)*(%1)+^!((%1)>>31)*(%1)"
endlocal & exit /b %abs%
Вариант без поразрядных операций:
@ echo off
setlocal enabledelayedexpansion
call :abs "%1"
echo abs(%1) = %errorlevel%
exit /b
:abs
:: Модуль числа
setlocal
set /a "abs=(%1)"
endlocal & exit /b %abs:-=%