2016-01-27 76 views
1

我有這樣的一段代碼,我會翻譯成MIPS,但我不知道這意味着什麼:A = B & C[0]&是什麼意思爲三元操作

當我谷歌三元操作我無法找到任何提及的&,只是e1 ? e2 : e

這是什麼意思?

+0

爲什麼你認爲這是一個*三元操作符?如果你認爲是這樣,你是否也認爲'A = B + C [0]'是一個三元運算符? – Andreas

+2

我想你的老師用錯了一本書 - 類似的問題已經在這裏得到解答http://stackoverflow.com/questions/28160408/translating-c-to-mips-with-a-ternary-operator – VolAnd

+0

'&'不是在你的例子中是一個三元運算符,它是一個*二元運算符。 – Galik

回答

2

這裏沒有三元運算符。該表達式等同於A = (B & C[0]),即A被分配了按位AND應用於BC[0]的結果。

+1

...或邏輯與,如果變量是布爾類型。 –

0

&這裏是二進制(2輸入)運算符「按位和」。 在這種情況下,您有:

A = B & C[0]; 

所以A將收到的BC[0]的逐位和ING的結果。 允許想象A,B和C [0]是兩個32個的整數,具有予隨機分配他們的值,並允許查看二進制此操作:

B = 0000 0001 0010 0100 1000 1001 1011 1111 
C[0] = 1001 1110 1101 1101 1010 1010 1010 0101 
A = 0000 0000 0000 0100 1000 1000 1010 0101 (the and of the two values above) 

即,A只有一個1位其中BC[0]都有1位。

十進制這是19171775 & 2665327269 = 297125

順便說一句,三元運算符有3個輸入,最常見的是?:,如在R = C ? B : A