cardNumber = j+1;
deck[i][j] = cardNumber;
theDeck[k] = cardNumber;
はそれだけで、同時にデッキとtheDeckの両方にcardNumberプロパティを割り当てることが
deck[i][j] = theDeck[k] = cardNumber;
を言うために有効である??
cardNumber = j+1;
deck[i][j] = cardNumber;
theDeck[k] = cardNumber;
はそれだけで、同時にデッキとtheDeckの両方にcardNumberプロパティを割り当てることが
deck[i][j] = theDeck[k] = cardNumber;
を言うために有効である??
はい、そうです。代入演算子は値を返します。
または、どのように私はそれを言うだろう: "代入演算子は式です。"つまり、Pythonのような他の言語にある「代入文」とは別に設定します。 Cは "文脈コンテキスト"内の(すべての)式を許すだけです。 (Pythonは 'x = y = 42'を許しますが、' x =(y = 42) 'は特殊な文の構造であることを示していません)。 –
はい、それは式であり、その値は代入の右側です。これは=
の関連性からも来ることに注意してください(右から左)になりれ、この:
x = y = z
相当:
x = (y = z)
でもない:だから
(x = y) = z /* wouldn't work */
さらに進んで書いてください。
theDeck[k] = deck[i][j] = cardNumber = j+1;
はい、そうです。これは次のようなものです:
deck[i][j] = (theDeck[k] = cardNumber);
試してみるとコンパイラはあなたに何を伝えますか? –
はい - 代入式(x = y)の値はx –
に割り当てられているものです。いくつかのコンパイラ設定でコンパイラの警告が表示されることがあります(例文はわかりませんが、if文これは関連している)。 'if((status = func(...)))goto exit;'(警告はあなたが何か「間違っている」ためではなく、見た目のためにではありません==は意図された使用でした)。 –