Если заявление MATLAB пример вопроса

Я пытаюсь запустить этот простой код MATLAB оператора if в версии MATLAB 7.6.0 (R2008a).

* Я набрал это в M-File:

function output = DEMO(input)
 if input > 0
   fprintf('Greater than 0')
elseif input < 0
   fprintf('Less then 0')
else
   fprintf('Equals 0')
end

outvar = 1;

* Пытался реализовать это в командном окне: всякий раз, когда я вводил число, оно всегда дает мне больше 0!

Как здесь:

В чем дело? Я не мог понять это? Это потому что outvar = 1? Я пытался сделать это 0, получил тот же результат! -.-

1 ответ

Решение

Когда вы вызываете функцию следующим образом:

DEMO 0

Это неявно проходит 0 в виде строки: '0', Когда вы выполняете сравнение между строкой '0' а также 0, '0' преобразуется в код ASCII (32) и оно всегда оказывается больше 0,

Вместо этого вы захотите использовать скобки для явного вызова функции и передачи числа.

DEMO(0)

Как примечание, вы, кажется, назначаете outvar но тогда выходной аргумент вашей функции на самом деле output, Также вы назначаете outvar в 1 внизу независимо от состояния. Если вы хотите иметь другое выходное значение для каждого условия, вам нужно установить выходное значение в пределах if заявление о заинтересованности.

Может быть что-то вроде:

function output = DEMO(input)
    if input > 0
       fprintf('Greater than 0')
       output = 1;
    elseif input < 0
       fprintf('Less then 0')
       output = -1;
    else
       fprintf('Equals 0')
       output = 0;
    end
end
Другие вопросы по тегам