2017-02-28 91 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 
錯誤
相關問題