2016-08-15 13 views
-1

論理イメージyがあり、そのコピーを作成したいとします。次の文の違いは何ですか?x = yとx = y == 1の違い

x = y; 

x = y==1; 
+3

yが論理配列の場合、両方のステートメントは同等の出力を返します。 – Jonas

+0

2番目の代入は 'x =(y == 1);と解釈されます。 – patrik

答えて

4

x = yは割り当てです。変数xを変数yに現在含まれている値に設定します。

x==yは、論理演算子で、「xyと等しいですか」と質問していますか?

x=y==1は、yの対応する値が1に等しい場合、xのすべての部分を真に設定します。

あなたが提示する2つのステートメントの違いは、最初のステートメントではx=y,xyの完全コピーになります。ただし、2番目の文では、xはブール値を持つ論理行列になります。 1yは、1および0を含み、yは、1以外のものを含んでいます。

yが既に論理行列である特定の場合、(従ってのみ10を含む)で両方のステートメントは、このように上記のとおり等価であり、等価性チェックが冗長であるため、追加のように最初の文が速くなります不要なオーバーヘッド。

+0

あなたの答えはより一般的ですが、特定の質問では' y'はすでに論理行列ですので結果に違いはありません。しかし、 'x = y'は直接yの値をチェックせずにxに代入しますが、' x = y == 1'はyが1に等しいかどうかをチェックしてから対応するインデックスを1に設定する必要があります。もっとゆっくり。 –