2016-12-17 12 views
2

나는이보기의 문법 지점에서 완벽하게 보이지만 코드왜 삼항 연산자가 내 코드에서 작동하지 않습니까?

mystack.empty() ? return 1 : return 0; 

의 다음 조각 나는 말에서 오류가 발생 실행하려고 할 때마다

[오류] 기대 ':'전 '복귀'

[오류] 예상 홍보 'return'이전의 이마 리 표현

3 진 연산자가 return 문과 함께 작동하지 않습니까? 아니면 코드에 문제가 있습니까? 그리고 코드는 자명하다 고 생각합니다.

감사합니다.

+3

_which이 view_의 구문 지점에서 완벽한 보인다 (즉, 함수는 부울 값을 반환 가정) 다음 코드를 포맷하고 사용하려고 - 아니,이 –

+4

이를 어느 언어하지 않는 이유는 무엇입니까? '반환 (return) '은 대개 성명이지만 삼항 연산자는 두 개의 표현식을 필요로합니다. 'return (mystack.empty()? 1 : 0);'. – Lee

+0

@EdHeal 여기에 무슨 문제가 있습니까? – Anoneemus

답변

7

구문이 올바르지 않습니다. Ternary conditional operator의 피연산자는 expressions이어야하지만 return 1return 0은 그렇지 않습니다. 한편

, return statement 그러한 삼원 조건 연산자와 같은 (선택적) 식으로 사용될 수있다 :

ATTR (옵션) 식 (옵션)를 반환; (1)

그래서 당신은/

return mystack.empty() ? 1 : 0; 
+0

기술적으로'return 1'은 문장이 아닙니다 ('return 1;') –

+0

@ M.M 그래서 그것은 단지 잘못된 표현입니까? 진술이나 표현이 아닙니다. – songyuanyao

+1

그래, 표현식이 아니기 때문에 조건 연산자에 대한 문법을 ​​충족시키지 못한다. (그리고 그게 무엇이든 상관 없다.) –

1

복귀로 작성해야 수있는 것은 문이고 규칙은 당신이 표현에 문을 호출하지 못할 것입니다.

return mystack.empty()? 1:0;