我初學者到Android,我在看這個教程,來到翻過此代碼:解釋這行代碼的Android
int temp = (sensor.getType() == Sensor.TYPE_ACCELEROMETER) ? 1 : 0;
能有人給我解釋這一點。
可能是這個問題是重複的,但我不知道該怎麼尋找。 如果你能告訴我它在C#中是什麼,那將會很棒。
我初學者到Android,我在看這個教程,來到翻過此代碼:解釋這行代碼的Android
int temp = (sensor.getType() == Sensor.TYPE_ACCELEROMETER) ? 1 : 0;
能有人給我解釋這一點。
可能是這個問題是重複的,但我不知道該怎麼尋找。 如果你能告訴我它在C#中是什麼,那將會很棒。
(sensor.getType() == Sensor.TYPE_ACCELEROMETER) ? 1 : 0;
意味着
int result;
if (sensor.getType() == Sensor.TYPE_ACCELEROMETER)
result = 1;
else
result = 0;
如果你正在談論的括號,問號,冒號,然後... ...它會像這樣
(Condition ? If_condition_is_true_do_this : otherwise_do_this);
酷似這樣做:
if(Condition)
If_condition_is_true_do_this
else
otherwise_do_this
而且是同信達x在C#中;
這是Java,而不是C#,但三元運營商存在那裏。
關於三元運營商,單擊here。
什麼(全)代碼(不是你的代碼段)在這裏所做的是檢查平等sensor
變量,類常量Sensor.TYPE_ACCELEROMETER
並指定缺少的變量上留下1,如果它們相等,否則爲0。
我相信,只要你想解釋什麼不是100%,但似乎你不知道/瞭解有關在Java中ternary operator
。
這實際上意味着:
if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
temp = 1;
}
else {
temp = 0;
}
此外,我不能確定這是否是正確的Java代碼。似乎你已經遺漏了一些你的問題,因爲三元運算符很可能屬於賦值語句或返回語句。
謝謝,現在我明白了。 –
三元運算符效率更高,因爲這很可能會被編譯爲CCMOV(有條件移動),而CCMOV不會受到分支預測失敗的影響。 –