一个小失误,差点怀疑人生

  一个普通的if选择的demo代码:

%非常简单的分段函数计算calFx.mx=input('please input x value:');if x<0y=log(x.*x+1)+sqrt(x.*x+1);            %点乘是为了能将向量作为输入参数elsey=sin(x)./(x+1);                    %点除是为了能将向量作为输入参数disp(['resule:',num2str(y)]);end

测试方法:

>> format compact
>> calFx
please input x value:>>2   输入2好像没有问题
x =2
result:0.3031
>> calFx
please input x value:>>-2  输入-2不能输出计算的结果
x =
    -2
>> y                需要再次输入后才能显示y的值,表明已经计算,但是没有显示
y =
    3.8455

其实就是犯了小小的错误,将最后两行代码交换顺序即可。没改之前,代码被分成两块,小于零时,根据y的计算公式计算y的值,但是不能输出;当输入的x大于0时,计算y的值之后,调用disp将y的结果输出。将显示结果的语句放置进了一个不是那么合适的代码块中。交换后,无论输入的x正负,调用不同的公式计算后,都会被disp将y的值输出。表明,语句的执行顺序还是非常重要的。