2013-07-23 97 views
0

我初學者到Android,我在看這個教程,來到翻過此代碼:解釋這行代碼的Android

int temp = (sensor.getType() == Sensor.TYPE_ACCELEROMETER) ? 1 : 0; 

能有人給我解釋這一點。

可能是這個問題是重複的,但我不知道該怎麼尋找。 如果你能告訴我它在C#中是什麼,那將會很棒。

回答

3
(sensor.getType() == Sensor.TYPE_ACCELEROMETER) ? 1 : 0; 

意味着

int result; 
if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) 
    result = 1; 
else 
    result = 0; 
+0

謝謝,現在我明白了。 –

+1

三元運算符效率更高,因爲這很可能會被編譯爲CCMOV(有條件移動),而CCMOV不會受到分支預測失敗的影響。 –

1

如果你正在談論的括號,問號,冒號,然後... ...它會像這樣

(Condition ? If_condition_is_true_do_this : otherwise_do_this); 

酷似這樣做:

if(Condition) 
    If_condition_is_true_do_this 
else 
    otherwise_do_this 

而且是同信達x在C#中;

1

這是Java,而不是C#,但三元運營商存在那裏。

關於三元運營商,單擊here

什麼(全)代碼(不是你的代碼段)在這裏所做的是檢查平等sensor變量,類常量Sensor.TYPE_ACCELEROMETER並指定缺少的變量上留下1,如果它們相等,否則爲0。

2

我相信,只要你想解釋什麼不是100%,但似乎你不知道/瞭解有關在Java中ternary operator

這實際上意味着:

if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
    temp = 1; 
} 
else { 
    temp = 0; 
} 

此外,我不能確定這是否是正確的Java代碼。似乎你已經遺漏了一些你的問題,因爲三元運算符很可能屬於賦值語句或返回語句。