2013-07-23 2 views
0

Я нахожусь новичок в 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 (условное перемещение), которое не будет страдать от отказа предсказания ветвления. –

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% как то, что вы хотите объяснить, но, похоже, вы не понимаете/не знаете о ternary operator в Java.

Это по существу означает:

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

Кроме того, я не уверен, если это правильный код Java. Кажется, что вы оставили что-то из своего вопроса, поскольку тернарный оператор, скорее всего, принадлежит либо заданию, либо возврату.

Смежные вопросы