Неожиданный вывод при вызове октавного скрипта из переполнения стека

Я вызываю скрипт Octave из PHP и передаю ему параметры. Но я получаю неожиданный вывод.

Код PHP, который я использую для передачи аргументов и вызова скрипта Octave:

$a=8;
$b=3;
$cmd = "C:\Octave\Octave4\bin\octave-cli C:\wamp\www\dspace\add.m $a $b";
$ex = passthru($cmd, $op);
var_dump($ex);

Мой октавный скрипт:

arglist = argv();
a = arglist{1};
b = arglist{2};

function f (a,b)
a + b
endfunction

printf(f(a,b));

Выходное значение:

ans = 107

Ожидаемый результат:

11

Как я могу это исправить?

1

Решение

Вы добавляете Коды ASCII для символа «8», который равен 56, и «3», который равен 51, поэтому результат равен 107. Преобразуйте строки в числа:

arglist = argv();

a = str2num (arglist{1});
b = str2num (arglist{2});

function ret = f (a,b)
ret = a + b;
endfunction

printf("%i", f(a,b));
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]