2016-09-14 6 views
-4
int a = 5, b = 7; 
int N = a == b ? a : a + b == 10 ? a + b : 0; 

В чем смысл следующего кода? Обновление: В основном, я хочу знать, по какой причине я могу использовать его и как он работает?Значение "int N = a == b? A: a + b == 10? A + b: 0;"

+1

С какой целью вы столкнулись с проблемой? –

+5

Вы можете найти информацию о [** тернарном операторе **] (https://en.wikipedia.org/wiki/%3F :) полезно. Также обсуждается по сравнению с if-else [на ** этом самом сайте **] (https://stackoverflow.com/questions/1659992/if-else-vs-ternary-operator). – WhozCraig

+1

Если это помогает, то это будет выглядеть, если бы оно использовалось, если утверждения http://pastebin.com/raw/LCvjaYFw –

ответ

0

С неявной скобках, это выражение эквивалентно:

int N = (a == b) ? a : ((a + b) == 10) ? (a + b) : 0; 

Это сопоставляющей N:

  1. Значение a, если a и b равны. Если нет ...
  2. Значение a + b, если a + b составляет 10 (то есть N присвоен 10). Если нет ...
  3. Значение 0.

Я чаще всего видел эту конструкцию, используемую при расчете количества дней в феврале для данного года.

int febDays = (year % 4 != 0) ? 28 : 
       (year % 100 != 0) ? 29 : 
        (year % 400 != 0) ? 28 : 29; 
Смежные вопросы