Rutar
24.08.2018 08:51:29
1
Недавно виявив, що програма неправильно порівнює від’ємні числа. Написав такий скрипт для перевірки:
$a=-450
$b=-400
;
@if $a<=$b then @goto %a else @goto %b
;
%a
@Dialog.Message A = $a, B = $b, A <= B
@goto %c
;
%b
@Dialog.Message A = $a, B = $b, A > B
@goto %c
;
%c
При виконанні у мене виводить: A = -450, B = -400, A > B. Якщо скрипт переписати наступним чином, то порівняння виконується вірно.
$a=-450
$b=-400
;
$delta=$a-$b
@if $delta<=0 then @goto %a else @goto %b
;
%a
@Dialog.Message A = $a, B = $b, A <= B
@goto %c
;
%b
@Dialog.Message A = $a, B = $b, A > B
@goto %c
;
%c
Результат: A = -450, B = -400, A <= B
В деяких випадках (а це напевно i вiн є) при формуваннi умови змiннi потрiбно заключати в лапки (@if “$a”<=“$b” then @goto %a else @goto %b). Колись я стикався з подiбним .