Если заявление 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