2017-02-28 26 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に等しくなりますが、t = – karl

答えて

1

あなたifブロックの内容が実行されることはありませんので、あなたがエラーを取得している(とあなたがifブロックのcontenstを実行した場合sのみ定義される):ここでは

はコードです。これは、論理式 -100 < t < 0が評価される方法によるものです。むしろ t-1000の間であれば、それは次のよう

-100 < ttrue(1)または false(0) が、のいずれかとすることができるので、 trueに評価するつもりはありません
(-100 < t) < 0; 

のと同等ですチェックより10両方がtが範囲内にあることを確認するにはない< 0

ある(-100, 0)の場合、条件を2つに分割し、論理値and&&)と組み合わせることをお勧めします。 tは、指定された範囲の外にある場合、あなたはあなたが

s = NaN; 

if t > -100 && t < 0 
    T = t + 100; 
    c1 = 20; 
    s = T * t; 
end 
を見ているエラーを取得しないように

if t > -100 && t < 0 

また、あなたには、いくつかのデフォルト値にsを設定してくださいしたいと思います

関連する問題