2017-02-28 55 views
-3

我想用t来计算s,但我的代码抱怨变量s未定义。这是为什么发生?为什么我的if语句的行为不如预期

下面是代码:

a=1; 
b=2; 
t=input('输入'); 

if (-100<t<0) 
     T=t+100 
     c1=20 
     s=T*t 
end 
fprintf('输出%f\n',s) 
+0

's'似乎是'if'语句的本地语言。 – Carcigenicate

+0

因为's'超出了范围? 's'在if语句中定义,不能在外部访问。在if语句之外定义它。 – Li357

+0

我已经做了,但是如果我设置s = 1,那么我输入t = -10,在这个代码中,s应该等于T * t,但是我每次都得到s = 1,不管哪个数字t是 – karl

回答

1

因为你if块的内容绝对不会执行你得到一个错误(和s如果执行if块的contenst只被定义)。这是由于评估逻辑表达式-100 < t < 0的方式所致。而不是检查如果t-1000之间,它是下列

(-100 < t) < 0; 

这是永远不会以评估true因为-100 < t等效可以是true(1)或false(0)10< 0

要检查t范围为(-100, 0),您将改为将条件拆分为两部分,并将它们与逻辑and&&)结合使用。

if t > -100 && t < 0 

而且,你要确保设置s一些默认值,这样,如果t在指定范围之外,你不会得到你所看到

s = NaN; 

if t > -100 && t < 0 
    T = t + 100; 
    c1 = 20; 
    s = T * t; 
end 
错误
相关问题