iOS 의 기묘 한 세 가지 연산 자 예시 상세 설명

1738 단어 ios삼 목 연산 자
머리말
삼목 연산 자:삼원 연산 자라 고도 부른다.이 연산 자의 부 호 는:?:,다음 글 은 주로 iOS 3 항목 연산 자 에 관 한 내용 을 소개 하 였 으 며,여러분 이 참고 학습 을 할 수 있 도록 공유 하 였 습 니 다.다음은 더 이상 할 말 이 없 으 니 상세 한 소 개 를 해 보 겠 습 니 다.
기초
일반적인 상황 에서 우 리 는 세 개의 연산 자(?:)를 사용한다.문법
(expression)?if-true-statement :if-false-statement;
표현 식 expression 결과 가 사실 이 라면 if-true-statement 을 실행 합 니 다.그렇지 않 으 면 if-false-statement 을 실행 합 니 다.
우 리 는 항상 세 개의 연산 자 를 사용 하여 간단 한 판단 대 가 를 한다.예 를 들 어:
y = x ? x : z;
즉,x 가 진실 이 라면 x 로 돌아 가 고 x 가 가짜 라면 z 로 돌아 가 는 것 이 가장 간단 하고 기본 적 인 용법 이다.
고급
그러나 가끔 우 리 는 이런 용법 을 볼 수 있다.
y = x ? : z;
? 와:사이 에 아무런 조작 수가 없습니다.이것 은 무슨 용법 입 니까?
몇 차례 의 실험 을 통 해 x 가 진짜 일 때 y 의 값 은 x 값 과 일치 하 는 것 을 발견 했다.그럼 내 가 추측 해 볼 까?와:사이 에 x 를 생략 했다.
즉,y=x?:z; y=x?x : z;등가,이렇게 하면 사실 과 일치한다.
복잡 하 다.
하지만 이것 은 가장 간단 한 상황 일 뿐 입 니 다.그렇다면 조금 복잡 한 상황 은 요?
예:a>b?:b.중간 에 뭘 생략 했 어 요?a 일 까요?
검증 을 거 쳐 a 가 아니 라 는 것 을 발견 했다.
사실 그것 은 a>b 를 생략 한 것 이다.
즉 a>b?:b 는 a>b 와 같 습 니까?a > b : b;
그렇다면 결론 을 내 릴 수 있 을 것 같은 데?와:중간 에 생략 한 것 은?이전 표현 식 은 일치 합 니 다.
그럼 확실히 그런 건 가요?
특례
우 리 는 OC 에 이상 한 연산 자가 있다 는 것 을 알 고 있다.그렇다면 세 개의 연산 자 에서 의 표현 은 어 떨 까?
예:

int x = 0; 
int y = ++x ? ++x : 3;
결국 y 의 값 은 2 이다.
그러나

int x = 0; 
int y = ++x ? : 3;
결국 y 의 값 은 1 이 었 다.
왜 두 번 의 결과 가 일치 하지 않 습 니까?위의 결론 에 따 르 면 y 의 값 은 모두 2 여야 한다.
그런데 왜 첫 번 째 결과 y 의 값 은 2 이 고 두 번 째 결과 y 의 값 은 1 입 니까?
결론.
내 추측 으로 는?와:사이 에 생략 된 것 은?이전 표현 식 의 값 은 생략 된 표현 식 이 아 닙 니 다.
이렇게 하면 위의 모든 상황 을 설명 할 수 있다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기