2016-07-29 3 views
-1

Я столкнулся с другим способом возвращения ценностей и был взволнован. Что это значит?Что возвращает z <0? z + y: z означает?

Если бы мне пришлось угадать, я бы сказал, что это что-то значит по линии ... if z < 0, а затем добавить z и y, else return z?

int ffunction(int x, int y) 
{ 
    int z = x % y; 
    return z < 0 ? z + y : z; 
} 
+5

Тернарный оператор, будет объяснен в любой языковой книге или учебнике. –

+2

«Я натолкнулся на другой способ возврата значений». Здесь нет «другого способа вернуть значения». – AnT

+0

@ Возможно, это не лучший выбор слов. То, что я имел в виду, вместо того, чтобы возвращать что-то простое, как .. return z, этот выглядит более сложным. Это все. – ricky162

ответ

4

Вы используете ternary operator и возвращает результат этого. Это в основном оператор if на одной строке. Он гласит:

if(z < 0) 
{ 
    return z + y; 
} 
else 
{ 
    return z; 
} 
+0

Спасибо! Я впервые слышу этот термин. – ricky162

1

Это означает, что если z ниже нуля (иначе negetive) возврата г + у, и если это не так (z является нулем или положительным) само по себе возвращение г.

Это эквивалентно:

if (z<0) 
    return z+y; 
else 
    return z; 
2

Ваш код в вопросе так же, как:

int ffunction(int x, int y) 
{ 
    int z = x % y; 
    if(z < 0){ 
     return (z + y); 
    } 

    else{ 
     return z; 
    } 
} 

В вашем вопросе используется тройная оператор, который является формой компактного if заявления.

3

?: - тернарный оператор (оператор с тремя операндами), известный как условный оператор. Либо второй (z + y), либо третий операнд (z) выполняется на основе того, является ли первое (z < 0) истинным или ложным. Таким образом,

return z < 0 ? z + y : z; 

эквивалентно

if (z < 0) { 
    return z + y; 
} else { 
    return z; 
} 
+1

это условный оператор, но это не «условный оператор». Это тернарный оператор. – Sixty4Bit

+2

@ Sixty4Bit, у вас есть это в обратном направлении. Это * * тернарный оператор, известный как * условный оператор. Существуют и другие тернарные операторы (хотя и не в C). См. Связанный документ. – ikegami

+0

Спасибо! Узнал что-то сегодня. – Sixty4Bit

2

Это форма компактного if. Основном, он говорит, что:

if (z < 0) 
    return z + y; 
else 
    return z; 
0

Условный оператор. Функция возвращает z + y, если z меньше 0, иначе оно возвращает z.

+2

Тернарный оператор. – ameyCU

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